Unicode/字符编码对照表
输入一个字符,即可对照查看其Unicode码点、UTF-8字节序列,以及JavaScript/HTML/URL/CSS转义表示形式的免费工具。全部在浏览器内完成。
常见字符编码对照表
| 字符 | 码点 | UTF-8 | 备注 |
|---|---|---|---|
| A | U+0041 | 41 | 大写字母(ASCII,1字节) |
| 0 | U+0030 | 30 | 数字(ASCII,1字节) |
| ␣ | U+0020 | 20 | 半角空格(ASCII,1字节) |
| ! | U+0021 | 21 | 感叹号(ASCII符号,1字节) |
| @ | U+0040 | 40 | “at”符号(ASCII符号,1字节) |
| © | U+00A9 | C2 A9 | 版权符号(Latin-1补充区,2字节) |
| € | U+20AC | E2 82 AC | 欧元符号(3字节) |
| → | U+2192 | E2 86 92 | 向右箭头(箭头区块,3字节) |
| あ | U+3042 | E3 81 82 | 日语平假名(3字节) |
| 漢 | U+6F22 | E6 BC A2 | CJK统一表意文字(3字节) |
| 한 | U+D55C | ED 95 9C | 韩文谚文音节(3字节) |
| 😀 | U+1F600 | F0 9F 98 80 | 表情符号(超出基本多文种平面,4字节,在JS中以代理对表示) |
使用提示
- 输入框可以输入多个字符,此时会在输入框下方分别显示每个字符对应的结果区块。
- 像😀这样的表情符号超出了Unicode的基本多文种平面(BMP,U+0000至U+FFFF),因此JavaScript字符串内部会用两个代码单元(代理对)来表示它,这就是“JavaScript转义”一行会显示两个`\uXXXX`的原因。
- CSS转义(如`\41`)直接书写码点的十六进制数字且不加前缀,如果紧随其后的字符可能被误读为十六进制数字的一部分,建议在末尾加一个空格。
- 浏览器会将十进制(`A`)和十六进制(`A`)的HTML实体视为相同结果,可根据标记习惯任选其一。
- 每一行都有复制按钮,可直接将该值复制到剪贴板,方便粘贴到代码或CSS中使用。
常见问题
JavaScript字符串在内部采用UTF-16编码,一个代码单元只能表示16位(0至65535)范围内的值。Unicode中存在大量超出该范围的码点(U+10000及以上,绝大多数表情符号都在此范围),因此需要用两个特殊的代码单元——“高代理”和“低代理”——组合成一个代理对来表示。如果逐个使用`charCodeAt`读取字符串,会分别得到这两个半值,因此必须使用`codePointAt`才能得到正确、完整的码点。
Unicode码点(例如U+3042)只是用来标识某个字符的编号本身。而UTF-8是将该码点在计算机中存储或传输为字节序列的一种具体编码方案。同一个码点在不同编码方式下表示的字节序列并不相同——UTF-8使用1到4个可变长度的字节,而UTF-16或UTF-32则会产生不同的字节序列。
UTF-8可以用单个字节表示纯ASCII字符(英文字母、数字、基本标点),因此与早期以英语为中心的系统高度兼容,同时又能表示Unicode中的所有字符。截至2026年,网络上绝大多数文本都采用UTF-8编码,它也是HTML文档推荐使用的默认字符编码。
不一样,两者语法不同。HTML实体的写法是`A`(十进制)或`A`(十六进制,带`x`前缀),且只能在HTML标记中使用。CSS转义的写法是`\41`——只写十六进制数字,不加`U+`或`x`前缀——用于CSS选择器或属性值中。需要根据使用场景选择正确的格式。
闲话 ― Unicode如何统一了四分五裂的字符编码世界
在Unicode出现之前,不同国家甚至不同语言的计算机字符编码方式千差万别。仅日文文本就存在Shift_JIS、EUC-JP、JIS编码等多种并存的方案,在使用不同编码的系统之间交换文本时经常出现乱码。1991年发布的Unicode 1.0,正是为了解决这一混乱局面,为世界上每一种语言使用的每一个字符分配唯一的编号(码点)。
Unicode与ISO/IEC 10646这一国际标准最初是各自独立制定的,但后来两者协调一致,共享相同的字符集合与码点分配。如今Unicode已收录超过15万个字符(包括表情符号),并且每年都会发布新版本继续添加新字符。
UTF-8由Ken Thompson和Rob Pike于1992年设计,其突破性在于既能与纯ASCII文本完全向后兼容,又能表示Unicode中的所有字符——这一设计恰好契合了互联网的需求,此后UTF-8已成为互联网文档事实上的标准编码。