本文為大家詳細講解了JavaScript中的字符集,以及字符集的編碼與解碼的相關知識,非常的細緻,有需要的小伙伴可以參考下
一、字符集
1)字元與位元組(Character)
字元是各種文字和符號的總稱,包括亂碼;一個字元對應1~n個位元組,一位元組對應8位,每位用0或1表示。
2)字元集(Character Set)
字元集是多個字元的集合,每個字元集包含的字元數不同,常見字元集名稱:ASCII字元集、GB2312字元集、Unicode字元集等。
3)字元集編碼(Character Encoding)
字元集編碼就是將符號轉換為電腦可讀的二進制,解碼就是把二進位轉換為人類可讀的符號。
字元集大多對應一種編碼方式(例如GBK對應GBK編碼),但Unicode編碼有多種,包括UTF-8、UTF-16、UTF-32和UTF-7。
目前網頁用的最多的就是“UTF-8”,UTF-8使用一到四個位元組為每個字元編碼,是ASCII的一個超集,所以現存的ASCII文字不需要轉換
二、瀏覽器進位
1)HTML屬性中使用十進位與十六進位
十進位在HTML中可使用“8”,十六進制,則使用“Z”,比十進制多了個x,進位碼中也多了a~f這6個字元來表示10~15。
2)CSS屬性中使用十進位和十六進位
CSS相容HTML的進位形式,除此之外,十六進位還可以使用“\6c”的形式來表示。
3)JavaScript編碼封裝
可以直接透過eval執行字串八進位和十六進位兩種編碼方式,其中八進位用「\56」表示,十六進位用“\x5c”表示。
如果程式碼中應用了漢字並且需要進行進位編碼,那麼只能進行十六進位Unicode編碼,其表示形式為:「\u4ee3\u7801」。
在「Web前端駭客技術揭秘」中經封裝了兩個方法來做編碼和解碼,主要用到了下面兩個方法,具體代碼可查看此處。
核心程式碼是:「str.charCodeAt(char).toString(進位)」與「String.fromCharCode(parseInt(code,進位))」
charCodeAt() 方法傳回0到65535之間的整數,表示給定索引處的UTF-16代碼單元
#靜態String.fromCharCode() 方法傳回使用指定的Unicode值序列所建立的字串。
也可以透過一個線上網頁進行編碼解碼「MonyerJS」。
4)HTML自動解碼機制
例如在網頁中輸入16進位的“Hello”,自動就會解碼為“hello”。
還有一些比較熟知的空格「 」也是這種機制。
三、瀏覽器編碼
JavaScript中有三對可以對字串編碼解碼的函數,分別是:
escape/unescape、encodeURI /decodeURI、encodeURIComponent/decodeURIComponent。
主要的差異還是不編碼的字元數。
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
上面是我整理給大家的,希望未來會對大家有幫助。
相關文章:
#以上是詳細為你解讀JavaScript字元集編碼與解碼(圖文教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!