URLEncode - 让它按我想要的方式工作

时间:2011-03-21 14:50:51

标签: javascript urlencode

我想对网址编码电子邮件地址。我在w3schools,上输入“bmackey@foo.com”,但它没有编码“@”或“。”。我正在使用encodeURI()并获得相同的结果。发生了什么事?

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

GET http://dev:8989/SJMUserManager/Service/Index/bmackey@foo.com

我希望看到

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

3 个答案:

答案 0 :(得分:4)

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

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

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

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

答案 1 :(得分:2)

您可以尝试使用encodeURIComponent

encodeURIComponent('GET http://dev:8989/SJMUserManager/Service/Index/bmackey@foo.com')

返回:

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

答案 2 :(得分:0)

@是保留字符,因此未编码,您可以在以下位置查看参考: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURI