前端日拱一卒D6——字符编码与浏览器解析

前言

余为前端菜鸟,感姿式水平匮乏,难观前端之大局。遂决定循前端知识之脉络,以兴趣为引,辅以几分坚持,望于己能解惑致知、于同道能助力一二,岂不美哉。前端

本系列代码及文档均在 此处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

相关文章
相关标签/搜索