从JavaScript看字符编码的前世今生!

2022-05-18 10:41:12 浏览数 (1)

导语 | 每个程序员都应该了解一下字符编码,有了基础概念之后我们对编程语言、字符处理能有更深入的理解。本文我花了大量时间进行资料查阅和考证,希望能够给大家带来一些帮助,多多交流!

一、起因

最近在研究Babel的源码,在看到Acorn词法解析源码中有这样一段逻辑:

代码语言:javascript复制
pp.fullCharCodeAtPos = function() {  let code = this.input.charCodeAt(this.pos)  if (code <= 0xd7ff || code >= 0xdc00) return code  let next = this.input.charCodeAt(this.pos   1)  return next <= 0xdbff || next >= 0xe000 ? code : (code << 10)   next - 0x35fdc00}

这段代码初看的时候完全不得其解,看起来像是判断了编码范围,重新计算了一个编码。于是朝着字符编码的方向深入探索了一下,结果发现了一段庞大的历史。

记得在前几年,Emoji的问题还蛮火的,大家都挺奇怪,为什么有的Emoji在JavaScript里的长度是2,还有一个'

0 人点赞