js三種編碼格式

本文是對于js編碼格式的一個筆記,最緊要面試了感覺基礎很差,在復習cookie的時候提到了cookie的編碼格式問題,想一想編碼的知識點好像都沒有認真總結過,所以今天我要把這篇知識點補上,而且要補好。

js中有三個函數是用于編碼的,他們是 escape(),encodeURI(),encodeURIComponent()函數。

而相對應的解碼函數式:unescape,decodeURI,decodeURIComponent 。

escape函數在js學習手冊上的描述是:

對 String 對象編碼以便它們能在所有計算機上可讀。

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

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

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

(轉)該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。其他所有的字符都會被轉義序列替換。

但是會編碼(;/?:@&=+$,#)這些在地址欄中經常用到的特殊字符

**


var a = "stron g";
console.log(escape(a));  //stron%20g

var a = "stron;/?:@&=+$,#g";
console.log(escape(a));  //stron%3B%2F%3F%3A%40%26%3D%2B%24%2C%23g

encodeURI

將文本字符串編碼為一個有效的統一資源標識符 (URI)。

說明:

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

此方法是不會將(;/?:@&=+$,#)這些字符編碼的

var a = "str on @g";
console.log(encodeURI(a))  //stron;/?:@&=+$,#g

encodeURIComponent

說明:URIComponent 是一個完整的 URI 的一部分。

如果 encodedURIString 無效,將產生一個 URIError。

該方法不會對 ASCII 字母和數字進行編碼,也不會對這些 ASCII 標點符號進行編碼: - _ . ! ~ * ' ( ) 。

但是會編碼(;/?:@&=+$,#)這些在地址欄中經常用到的特殊字符

var a = "str on @g";
console.log(encodeURIComponent(a))  //stron%3B%2F%3F%3A%40%26%3D%2B%24%2C%23g

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容