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