前言
余为前端菜鸟,感姿势水平匮乏,难观前端之大局。遂决定循前端知识之脉络,以兴趣为引,辅以几分坚持,望于己能解惑致知、于同道能助力一二,岂不美哉。
本系列代码及文档均在
字符编码
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解析器
待补充
虽发表于此,却毕竟为一人之言,又是每日学有所得之笔记,内容未必详实,看官老爷们还望海涵。