JavaScript字符集編碼與解碼詳談
一、字符集
1)字符與字節(jié)(Character)
字符是各種文字和符號的總稱,包括亂碼;一個字符對應(yīng)1~n個字節(jié),一字節(jié)對應(yīng)8位,每位用0或1表示。
2)字符集(Character Set)
字符集是多個字符的集合,每個字符集包含的字符個數(shù)不同,常見字符集名稱:ASCII字符集、GB2312字符集、Unicode字符集等。
3)字符集編碼(Character Encoding)
字符集編碼就是將符號轉(zhuǎn)換為計算機可讀的二進制,解碼就是把二進制轉(zhuǎn)換為人類可讀的符號。
字符集大多對應(yīng)一種編碼方式(例如GBK對應(yīng)GBK編碼),但Unicode編碼有多種,包括UTF-8、UTF-16、UTF-32和UTF-7。
目前網(wǎng)頁用的最多的就是“UTF-8”,UTF-8使用一至四個字節(jié)為每個字符編碼,是ASCII的一個超集,所以現(xiàn)存的ASCII文本不需要轉(zhuǎn)換
二、瀏覽器進制
1)HTML屬性中使用十進制和十六進制
十進制在HTML中可使用“8”,十六進制,則使用“Z”,比十進制多了個x,進制碼中也多了a~f這6個字符來表示10~15。
2)CSS屬性中使用十進制和十六進制
CSS兼容HTML的進制形式,除此之外,十六進制還可以使用“\6c”的形式來表示。
3)JavaScript編碼封裝
可以直接通過eval執(zhí)行字符串八進制和十六進制兩種編碼方式,其中八進制用“\56”表示,十六進制用“\x5c”表示。
如果代碼中應(yīng)用了漢字并且需要進行進制編碼,那么只能進行十六進制Unicode編碼,其表示形式為:“\u4ee3\u7801”。
在“Web前端黑客技術(shù)揭秘”中經(jīng)封裝了兩個方法來做編碼和解碼,主要用到了下面兩個方法,具體代碼可查看此處。
核心代碼是:“str.charCodeAt(char).toString(進制)”與“String.fromCharCode(parseInt(code,進制))”
charCodeAt() 方法返回0到65535之間的整數(shù),表示給定索引處的UTF-16代碼單元
靜態(tài)String.fromCharCode() 方法返回使用指定的Unicode值序列創(chuàng)建的字符串。
還可以通過一個在線網(wǎng)頁進行編碼解碼“MonyerJS”。
4)HTML自動解碼機制
例如在網(wǎng)頁中輸入16進制的“Hello”,自動就會解碼為“hello”。
還有一些比較熟知的空格“ ”也是這種機制。
三、瀏覽器編碼
JavaScript中有三對可以對字符串編碼解碼的函數(shù),分別是:
escape/unescape、encodeURI/decodeURI、encodeURIComponent/decodeURIComponent。
主要的區(qū)別還是不編碼的字符個數(shù)。
1)escape不編碼的字符有69個
*、+、-、.、/、@、_、0~9、a~z、A~Z而且escape對0~255以外的unicode值進行編碼時輸出%u****格式。
2)encodeURI不編碼的字符有82個
!、#、$、&、'、(、)、*、+、,、-、.、/、:、;、=、?、@、_、~、0~9、a~z、A~Z
3)encodeURIComponent不編碼的字符有71個
!、'、(、)、*、-、.、_、~、0~9、a~z、A~Z
相關(guān)文章
javascript處理表單示例(javascript提交表單)
這篇文章主要介紹了javascript處理表單示例,處理 各種表單, 以及鏈接,按鈕的通用組件,需要的朋友可以參考下2014-04-04
Javascript學(xué)習(xí)筆記之 對象篇(三) : hasOwnProperty
判斷一個屬性是定義在對象本身而不是繼承自原型鏈,我們需要使用從 Object.prototype 繼承而來的 hasOwnProperty 方法。 hasOwnProperty 方法是 Javascript 中唯一一個處理對象屬性而不會往上遍歷原型鏈的。2014-06-06
簡單談?wù)凧avascript函數(shù)中的arguments
在JavaScript中,arguments對象是比較特別的一個對象,實際上是當(dāng)前函數(shù)的一個內(nèi)置屬性。下面這篇文章主要介紹了關(guān)于Javascript函數(shù)中的arguments面貌以及如何轉(zhuǎn)化為數(shù)組的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02

