前言
餘為前端菜鳥,感姿勢水平匱乏,難觀前端之大局。遂決定循前端知識之脈絡,以興趣為引,輔以幾分堅持,望於己能解惑致知、於同道能助力一二,豈不美哉。
本系列程式碼及文件均在 此處
字元編碼
ASCII碼
- 一個位元組,佔用後7位,128個字元,對應關係可查表
Unicode字符集
- 一個旨在包含全世界所有字元的集合
- Unicode字符集為每個字元定義了一個碼點,Unicode分割槽定義,其中碼點ox0000 - oxFFFF 對應為基本平面(1個),碼點ox010000 - ox10FFFF 為輔助平面(16個)。
- 每個平面最多可存放2^16個字元
UTF-32 UTF-8 UTF-16
- Unicode只定義了字元->碼點的對映,並沒有說明如何儲存字元,位元組序涉及到具體編碼方法。
- UTF-32是用4位元組(32位,8個16進位制位)來表示一個字元,可以做到一一對應所有Unicode碼位,但顯然這樣很浪費空間
為什麼是四位元組不是三位元組?算上所有平面也就最多到10FFFF,24位,按理說三位元組就夠了。
- UTF-8是一種變長的編碼方式,從1-4位元組不等
- UTF-16
- 基礎平面字元用兩個位元組表示,輔助平面用四個位元組
- 輔助平面有最多16 * 2^16 = 2^20次個字元,對應到20個二進位制位,則將其分成兩部分,前10位對映在U+D800到U+DBFF,後10位對映在U+DC00到U+DFFF
JavaScript使用的編碼
-
USC-2
- UTF-16晚於js誕生...所以當時選用了USC-2,後來這東西被UTF-16取代了
- UCS-2使用兩個位元組來對應碼點和表示字元,導致四位元組的字元會被當做兩個兩位元組字元處理,導致字元操作函式返回結果可能不對
-
ES6
- 碼點表示:2位元組
\u597D
, 4位元組\u{1D306}
- 其他改進:興趣不大...略過
- 碼點表示:2位元組
HTML解析器
待補充
雖發表於此,卻畢竟為一人之言,又是每日學有所得之筆記,內容未必詳實,看官老爺們還望海涵。