在将查询字符串发送到 Web 服务器的上下文中,适当的编码方法取决于具体编码要求。
不应使用 escape() 函数,因为它已在 ECMAScript 规范中被弃用。它对除 @、_、*、和 - 之外的所有特殊字符进行编码。
当您需要功能性 URL 时,请使用encodeURI()。它对除专门为 URL 保留的字符之外的所有字符进行编码。这些保留字符包括 /、&、?、: 和 @。
当您想要对 URL 参数的值进行编码时,请使用encodeURIComponent()。它对除明确指定为非保留字符之外的所有字符进行编码。这些非保留字符包括 /、?、: 和 @。
示例:
要对以下查询字符串进行编码:
http://www.example.org/a file with spaces.html
您将使用encodeURI()来获取以下编码URL:
http://www.example.org/a%20file%20with%20spaces.html
但是,如果您想对查询字符串中的参数值进行编码,则可以使用encodeURIComponent():
var p1 = encodeURIComponent("http://example.org/?a=12&b=55")
生成的编码参数值可以然后附加到基本 URL 以形成完整的 URL:
var url = "http://example.net/?param1=" + p1 + "¶m2=99"
这将产生以下完整的编码URL:
http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55¶m2=99
需要注意的是,encodeURIComponent() 不会对 ' 字符进行编码,如果在构造 HTML 属性时处理不当,可能会导致安全漏洞。
以上是Escape、encodeURI 或encodeURIComponent:何时使用哪个进行查询字符串编码?的详细内容。更多信息请关注PHP中文网其他相关文章!