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

P.B*_*key 1 javascript urlencode

我想对电子邮件地址进行 URL 编码。我在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

Aln*_*tak 5

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

需要编码的字符包括空格(变成+)、+本身以及%用于十六进制编码的 。

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

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