escape、encodeURI、encodeURIComponent等方法的區別

對於ASCII字符,這三個函數的作用都是將字符轉換成百分比編碼(Percent-encoding ),區別是各自排除編碼的字符不同:

escape() will not encode: @*/+

encodeURI() will not encode: ~!@#$&*()=:/,;?+'

encodeURIComponent() will not encode: ~!*()'

此外,escape其實是window對象的方法 ,encodeURIComponent和encodeURI是JS內置函數。

MDC裏的資料:window.escapeGlobal_Functions/encodeURIComponent .

對於非ASCII字符,escape和encodeURIComponent差異比較大:

escape('雕') == '%u96D5'

encodeURIComponent('雕') == '%E9%9B%95'

%u96D5是非標準Pecent-encoding, 現在已經沒有標準支持。

對於這種反轉碼最簡單的辦法,是用unescape:

alert(unescape('%u96D5');

escape 方法

返回一個可在所有計算機上讀取的編碼 String 對象。

function escape(charString : String) : String

參數

charString

必選。要編碼的任何 String 對象或文本。

備註

escape 方法返回一個包含 charstring 內容的字符串值(Unicode 格式)。所有空格、標點、重音符號以及任何其他非 ASCII 字符都用 %xx 編碼替換,其中 xx 等於表示該字符的十六進制數。例如,空格返回爲“%20”。

字符值大於 255 的字符以 %uxxxx 格式存儲。

注意 escape 方法不能用來對“統一資源標識符”(URI) 進行編碼。對其編碼應使用 encodeURI 和 encodeURIComponent 方法。

要求

版本 1

請參見

encodeURI 方法 | encodeURIComponent 方法 | String 對象 | unescape 方法

適用於:Global 對象

encodeURI 方法

返回編碼爲有效的統一資源標識符 (URI) 的字符串。

function encodeURI(URIString : String) : String

參數

URIString

必選。表示編碼 URI 的字符串。

備註

encodeURI 方法返回一個已編碼的 URI。如果將編碼結果傳遞給 decodeURI,則將返回初始的字符串。encodeURI 不對下列字符進行編碼:“:”、“/”、“;”和“?”。請使用 encodeURIComponent 對這些字符進行編碼。

要求

版本 5.5

請參見

decodeURI 方法 | decodeURIComponent 方法

適用於:Global 對象

encodeURIComponent 方法

返回編碼爲統一資源標識符 (URI) 的有效組件的字符串。

function encodeURIComponent(encodedURIString : String) : String

參數

encodedURIString

必選。表示編碼 URI 組件的字符串。

備註

encodeURIComponent 方法返回一個已編碼的 URI。如果將編碼結果傳遞給 decodeURIComponent,則將返回初始的字符串。因爲 encodeURIComponent 方法將對所有字符編碼,請注意,如果該字符串代表一個路徑,例如 /folder1/folder2/default.html,則其中的斜槓也將被編碼,這樣,當該字符串作爲請求發送到 Web 服務器時它將是無效的。如果字符串中包含多個 URI 組件,請使用 encodeURI 方法進行編碼。

要求

版本 5.5

請參見

decodeURI 方法 | decodeURIComponent 方法

適用於:Global 對象

unescape 方法

從用 escape 方法編碼的 String 對象中返回已解碼的字符串。

function unescape(charString : String) : String

參數

charString

必選。要解碼的 String 對象或文本。

備註

unescape 方法返回一個包含 charstring 內容的字符串值。所有以 %xx 十六進制形式編碼的字符都用 ASCII 字符集當中等效的字符代替。

以 %uxxxx 格式(Unicode 字符)編碼的字符用十六進制編碼 xxxx 的 Unicode 字符代替。

注意 unescape 方法不應用於解碼“統一資源標識符”(URI)。請改用 decodeURI 和 decodeURIComponent 方法。

要求

版本 1

請參見

decodeURI 方法 | decodeURIComponent 方法 | escape 方法 | String 對象

適用於:Global 對象

decodeURI 方法

返回一個已編碼的統一資源標識符 (URI) 的非編碼形式。

function decodeURI(URIstring : String) : String

參數

URIstring

必選。表示編碼 URI 的字符串。

備註

使用 decodeURI 方法代替已經過時的 unescape 方法。

decodeURI 方法返回一個字符串值。

如果 URIString 無效,將發生 URIError。

要求

版本 5.5

請參見

decodeURIComponent 方法 | encodeURI 方法

適用於:Global 對象

decodeURIComponent 方法

返回統一資源標識符 (URI) 的一個已編碼組件的非編碼形式。

function decodeURIComponent(encodedURIString : String) : String

必選的 encodedURIString 參數是一個表示已編碼的 URI 組件的值。

備註

URIComponent 是一個完整的 URI 的一部分。

如果 encodedURIString 無效,則將產生 URIError。

要求

版本 5.5

請參見

decodeURI 方法 | encodeURI 方法

適用於:Global 對象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章