2011-03-21 94 views
1

我想URL编码电子邮件地址。我在w3schools,上输入了“[email protected]”,但它没有编码“@”或“。”。我正在使用encodeURI(),并有相同的结果。到底是怎么回事?URLEncode - 让它工作如何我想要

至少,我认为它没有编码,因为我在Firebug Net标签看到:

GET http://dev:8989/SJMUserManager/Service/Index/[email protected]

我期望看到

GET http://dev:8989/SJMUserManager/Service/Index/bmackey%40foo%2Ecom

+6

[请不要光顾W3Schools的(http://w3fools.com) – Pointy 2011-03-21 14:53:51

+1

的'@'当我尝试时被编码为“%40”。点不是。你可以尝试encodeURIComponent()来获得你所需要的。 – 2011-03-21 14:56:55

+0

@Pointy - 感谢信息是有帮助的,但只是稍微适用于这个问题。 “我正在使用encodeURI()并具有相同的结果”。 – 2011-03-21 15:14:54

回答

4

@.不是HTTP URI的特殊字符。

需要编码的字符包括空格(变成+),+本身和%,它们用于十六进制编码。

正常ASCII范围32-127以外的其他字符以及该范围内的各种其他字符使用该十六进制编码%

为了正确处理,您应该考虑在用户提供的URI部分使用encodeURIComponent(),但只有。如果你用这种方式编码整个URI,你会得到一个无效的URI。

2

您可以尝试使用encodeURIComponent代替。

encodeURIComponent('GET http://dev:8989/SJMUserManager/Service/Index/[email protected]') 

返回:

"GET%20http%3A%2F%2Fdev%3A8989%2FSJMUserManager%2FService%2FIndex%2Fbmackey%40foo.com" 
相关问题