是否可以在URLVariables变量名中使用下划线字符?例如,下面的代码输出"my%5Fusername=foo“而不是"my_username=foo”。
import flash.net.URLVariables;
var variables : URLVariables = new URLVariables("my_username=foo");
trace(variables.toString());正如在跟踪中一样,请求中显示的是"%5F“,而不是下划线。有没有什么方法可以让下划线字符显示出来?
发布于 2012-01-09 14:33:28
简单地说,不要使用URLVariables类,这也是众所周知的做错了其他事情。This URL RFC将下划线称为特殊字符,并将其与字母数字字符放在同一类别中,表示不需要编码。This RFC将变量所在的部分调用为"query“,并将pchar分配给它,将pchar描述为包含下划线字符。
实际上,包含下划线字符的URI似乎不会给浏览器或服务器带来问题,因此对其进行编码是完全错误的。
编辑:从更深入的阅读来看,这看起来更像是一种不受欢迎的行为,然后是一个错误( URI规范化程序会知道将编码的下划线还原为其原始外观),尽管如此,编码下划线与编码英文字母是一样的-既浪费又愚蠢。
发布于 2012-01-09 13:58:17
使用regular expression,您可以将输出转换为下划线。此方法利用以下事实:
URLRequest's对象变量是泛型对象,ObjectString是toString()的对象,replace()是String对象3.代码:
var url:String = "http://www.[yourDomain].com/test";
var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables("my_user_name=f_o_o");
// add some more variables:
variables.exampleSessionId = "test";
variables.example_Session_Id2 = "test2";
// set up the search expression:
var undPatrn:RegExp = /%5f/gi;
trace("Without '_': " + variables.toString());
trace("With '_': " + variables.toString().replace(undPatrn, "_"));
trace(variables);
// navigate with %5f:
request.data = variables.toString();
navigateToURL(request);
// navigate with underscore:
request.data = variables.toString().replace(undPatrn, "_");
navigateToURL(request);发布于 2012-01-09 13:29:26
trace(unescape(variables.toString()));
https://stackoverflow.com/questions/8784054
复制相似问题