首頁 > web前端 > js教程 > Escape、encodeURI 或encodeURIComponent:何時使用哪個進行查詢字串編碼?

Escape、encodeURI 或encodeURIComponent:何時使用哪個進行查詢字串編碼?

Barbara Streisand
發布: 2024-12-11 02:12:09
原創
223 人瀏覽過

Escape, encodeURI, or encodeURIComponent: When to Use Which for Query String Encoding?

何時使用Escape、encodeURI 或encodeURIComponent 進行查詢字串編碼

在將查詢字串傳送到Web 伺服器的上下文中,適當的編碼方法取決於具體編碼要求。

escape()

不應使用 escape() 函數,因為它已在 ECMAScript 規範中被棄用。它對除 @、_、*、和 - 之外的所有特殊字元進行編碼。

encodeURI()

當您需要功能性 URL 時,請使用encodeURI()。它會對除專門為 URL 保留的字元之外的所有字元進行編碼。這些保留字元包括 /、&、?、: 和 @。

encodeURIComponent()

當您想要對 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 + "&param2=99"
登入後複製

這將產生以下完整的編碼URL:

http://example.net/?param1=http%3A%2F%2Fexample.org%2F%Ffa%3D12%26b%3D55&param2=99
登入後複製

需要注意的是,encodeURIComponent() 不會對' 字元進行編碼,如果在建構HTML 屬性時處理不當,可能會導致安全漏洞。

以上是Escape、encodeURI 或encodeURIComponent:何時使用哪個進行查詢字串編碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板