在將查詢字串傳送到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中文網其他相關文章!