Appearance
Unicode编码
本节目标:理解“Unicode编码”的核心思路,并能把它用于实际开发或面试表达。
说明:原 OneNote 中有图片引用,但图片未包含在导出目录中;本页保留了可用的文字与代码内容。 Unicode****是: • 一种字符编码方案 • 它为每种语言中的每个字符都设定了统一且唯一的二进制编码。以实现跨语言、跨平台进行文本转换。 • 它用一个码位映射一个字符,码位值的范围是从 U0000 到 U10FFFF。
**码位**
一般是被格式化为十六进制数字的,零填充至少四位数,格式为 U + 前缀。比如:
A的码位:U0041, a的码位:U0061;
因为A的ASCII十进制为 65; a的ASCII的十进制为97;字符A十进制为65,转换成十六进制就是41了,Unicode码位: U0041。零号平面 Unicode最前面的65536个字符位,称为零号平面,它的码位范围是从U0000 到 UFFFF; 最常见的字符都在这里面了。
**Unicode****转义**16进制转义:A转义为\x41,a转义为\x61;Unicode转义:A的Unicode码位为U0041,Unicode转义就变成了\u0041; 这种表示法只限于码点在\u0000~\uFFFF之间的字符(占用两个字节,共65536个)。超出这个范围的字符,必须用两个双字节的形式表示。
如果直接在\u后面跟上超过0xFFFF的数值(比如\u20BB7),JavaScript 会理解成\u20BB+7。由于\u20BB是一个不可打印字符,所以只会显示一个空格,后面跟着一个7。这里只能使用下面这种表示方式了。
ES6中,只要将码点放入大括号,就能正确解读该字符。"\u{20BB7}"// "𠮷"
"\u{41}\u{42}\u{43}"// "ABC"
let hello = 123;hell\u{6F} // 123大括号表示法与四字节的UTF-16编码是等价的。如:'\u{1F680}' === '\uD83D\uDE80'// true