首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AS3:在URLVariables变量名中使用下划线字符

AS3:在URLVariables变量名中使用下划线字符
EN

Stack Overflow用户
提问于 2012-01-09 12:49:27
回答 3查看 1.9K关注 0票数 1

是否可以在URLVariables变量名中使用下划线字符?例如,下面的代码输出"my%5Fusername=foo“而不是"my_username=foo”。

代码语言:javascript
复制
import flash.net.URLVariables;
var variables : URLVariables = new URLVariables("my_username=foo");  
trace(variables.toString());

正如在跟踪中一样,请求中显示的是"%5F“,而不是下划线。有没有什么方法可以让下划线字符显示出来?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-09 14:33:28

简单地说,不要使用URLVariables类,这也是众所周知的做错了其他事情。This URL RFC将下划线称为特殊字符,并将其与字母数字字符放在同一类别中,表示不需要编码。This RFC将变量所在的部分调用为"query“,并将pchar分配给它,将pchar描述为包含下划线字符。

实际上,包含下划线字符的URI似乎不会给浏览器或服务器带来问题,因此对其进行编码是完全错误的。

编辑:从更深入的阅读来看,这看起来更像是一种不受欢迎的行为,然后是一个错误( URI规范化程序会知道将编码的下划线还原为其原始外观),尽管如此,编码下划线与编码英文字母是一样的-既浪费又愚蠢。

票数 1
EN

Stack Overflow用户

发布于 2012-01-09 13:58:17

使用regular expression,您可以将输出转换为下划线。此方法利用以下事实:

  1. URLRequest's对象变量是泛型对象,Object
  2. StringtoString()的对象,replace()String对象3.

代码:

代码语言:javascript
复制
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);
票数 1
EN

Stack Overflow用户

发布于 2012-01-09 13:29:26

trace(unescape(variables.toString()));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8784054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档