是否有用于将as3中的字符串转换为application/x-www-form-urlencoded格式的库?
具体来说,我正在寻找与java URLEncoder相同的功能http://java.sun.com/javase/6/docs/api/java/net/URLEncoder.html
不幸的是,as3的转义和encodeURIComponent函数没有这样做.例如,很多%20s而不是+'s.
对于编码URL参数,%20和+都是空格字符的有效表示,URLVariables.toString()和URLUtil.objectToString()都使用前者发出兼容的application/x-www-form-urlencoded数据(根据ECMA- 262).的是encodeURI() ,encodeURIComponent方法()和逃逸()功能的全部类似地操作.来自AS3文档:
flash.net.URLVariables.toString()
在MIME内容编码application/x-www-form-urlencoded中返回包含所有可枚举变量的字符串.
mx.utils.URLUtil.objectToString()
您通常使用此方法将ActionScript对象转换为String,然后将其附加到URL的末尾.默认情况下,无效的URL字符是URL编码的(转换为%XX格式).
encodeURIComponent方法()
将字符串编码为有效的URI组件.将URI的子字符串转换为字符串,其中所有字符都编码为UTF-8转义序列,除非字符属于一小组基本字符.
逃逸()
将参数转换为字符串并以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类或顶级函数使用加号而不是十六进制序列作为空格,我就不知道了.