unicode to code point
Unicode,也叫统一码、万国码等,使用它可表示世界上大部分的文字语言,其中 UTF-8/UTF-16 是一种针对 Unicode 的可变长度字符编码。
而对于 Unicode 中的每一个字符,都有一个独一无二的 ID,也叫码位,称作 code point。
点击下方示例快速体验不同类型的字符串编码
💡 提示:点击任意示例即可快速填入,支持中文、Unicode、Emoji 等多种字符类型
Unicode,也叫统一码、万国码等,使用它可表示世界上大部分的文字语言,其中 UTF-8/UTF-16 是一种针对 Unicode 的可变长度字符编码。
而对于 Unicode 中的每一个字符,都有一个独一无二的 ID,也叫码位,称作 code point。
在输入框中输入任意字符,工具会立即显示该字符对应的 Unicode 码位(Code Point)。比如输入汉字「你」,会得到码位 U+4F60。
你可以一次输入多个字符,工具会逐个列出每个字符的码位信息。
如果你已经知道码位,想查看对应的字符是什么,可以直接输入码位值。比如输入 U+0041,就能看到对应的字符是大写字母 A。
Emoji 和一些特殊符号位于 Unicode 的补充平面(Supplementary Plane),它们的码位超过了 U+FFFF。例如:
U+1F600这类字符在 JavaScript 中会占用两个 UTF-16 编码单元(即代理对),工具会帮你清楚地展示这些细节。
当你在处理字符串长度计算、字符截取等问题时,理解这些码位信息会非常有用。比如 '😀'.length 在 JavaScript 中返回 2 而不是 1,就是因为它使用了代理对编码。
\u 转义序列时,可以用这个工具快速查到码位在 Javascript 中,可借助于 String API 进行转化
// => 127817
'🍉'.codePointAt(0)
// => '🍉'
String.fromCodePoint(127817)
ord: ordinal 的缩写,获取其 codePointchr: character 的缩写,根据 codePoint 获取其字符> ord(u'🍉')
127817
> chr(127817)
'🍉'
Code Point(码位)是 Unicode 为每个字符分配的唯一编号,是一个抽象的数字概念,例如汉字「山」的码位是 U+5C71。UTF-8 则是一种具体的编码方案,规定了如何将码位转换为字节序列存储在计算机中。同一个码位 U+5C71 在 UTF-8 中会被编码为 3 个字节 E5 B1 B1,而在 UTF-16 中则编码为 2 个字节 5C 71。
Unicode 按照区块(Block)分配码位,常用字符排在前面,后续不断扩展收录新字符。基本拉丁字母和常用汉字的码位较小(在基本多文种平面 BMP 内,范围 U+0000 至 U+FFFF),而 emoji 表情、古文字、音乐符号等则被分配在辅助平面中(U+10000 及以上)。目前 Unicode 最大码位可达 U+10FFFF,共可容纳超过 110 万个字符。
在 JavaScript 中,可以使用 String.prototype.codePointAt() 方法获取字符的 Unicode 码位。例如 '山'.codePointAt(0) 返回 23665(即十六进制 0x5C71)。需要注意的是,对于辅助平面字符(如 emoji '😀'),旧的 charCodeAt() 方法会返回代理对的编码,只有 codePointAt() 才能正确返回完整的码位值。反过来,可以用 String.fromCodePoint(128512) 从码位还原字符。