AS3 string util转换为x-www-form-urlencoded?

时间:2009-02-14 05:54:28

标签: flash actionscript-3 actionscript string

是否有用于将as3中的字符串转换为application / x-www-form-urlencoded格式的库?

具体来说,我正在寻找与java URLEncoder http://java.sun.com/javase/6/docs/api/java/net/URLEncoder.html

相同的功能

不幸的是,as3的转义和encodeURIComponent函数没有这样做。例如,很多%20s而不是+'。

2 个答案:

答案 0 :(得分:7)

对于编码网址参数,%20和+都是空格字符的有效表示,URLVariables.toString()URLUtil.objectToString()都使用前者发出兼容的application / x-www-form-urlencoded数据(每ECMA-262)。 encodeURI()encodeURIComponent()escape()函数的运算方式类似。来自AS3文档:

  

flash.net.URLVariables.toString()

     

返回包含all的字符串   MIME中的可枚举变量   内容编码   应用程序/ x-WWW窗体-urlencoded。

     

mx.utils.URLUtil.objectToString()

     

您通常使用此方法进行转换   String的ActionScript对象   然后你追加到一个结尾   URL。默认情况下,URL无效   字符是URL编码(转换   到%XX格式。)

     

encodeURIComponent()

     

将字符串编码为有效的URI组件。   将URI的子字符串转换为   所有字符都在的字符串   编码为UTF-8转义序列   除非一个角色属于一个角色   一小组基本人物。

     

escape()

     

将参数转换为a   字符串并以URL编码方式对其进行编码   格式,大多数非字母数字   字符替换为%   十六进制序列。

以下是显示所有四种方法的用法和输出的示例:

import mx.utils.URLUtil;

private function test():void
{
    var url:String = "http://www.google.com/search?";
    var s:String = "here is my search query";

    var variables:URLVariables = new URLVariables();
    variables.q = s;

    var o:Object = new Object();
    o.q = s;

    trace(url + "q=" + encodeURIComponent(s));
    trace(url + variables.toString());
    trace(url + "q=" + escape(s));
    trace(url + URLUtil.objectToString(o));
}

所有四个都发出相同的结果(就像JavaScript自己的encodeURIComponent()一样):

// http://www.google.com/search?q=here%20is%20my%20search%20query

我同意加号在眼睛上更容易!手动交换它们:

trace(url + "q=" + escape(s).split("%20").join("+"));

但是如果有一个ActionScript类或顶级函数使用加号而不是十六进制序列作为空格,我就不知道了。

答案 1 :(得分:0)

我想补充一点,转义 encodeURIComponent 只会在 mutlibyte中的字符串时给出相同的结果。对于像ñ(西班牙语)这样的多字节字符串,escape()不会对值进行相关编码。使用encodeURIComponent和decodeURIComponent将。我发现hardway试图在多字节字符串上使用escape()来使用new navigateToURL(新的URLRequest(在使用mailto URL时会无声地失败)。