我想对网址编码电子邮件地址。我在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
答案 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