Unicode 转义编解码
字符与 \uXXXX 转义双向互转;emoji 等补充平面字符正确拆成代理对,并给出每个字符的码点、UTF-8 字节与 UTF-16 单元明细。
结果\u4F60\u597D\u002C\u0020\uD83D\uDE00\u0020\u0041
| 字符 | 码点 | UTF-8 字节 | UTF-16 单元 |
|---|---|---|---|
| 你 | U+4F60 | 0xE4 0xBD 0xA0 | U+4F60 |
| 好 | U+597D | 0xE5 0xA5 0xBD | U+597D |
| , | U+002C | 0x2C | U+002C |
| U+0020 | 0x20 | U+0020 | |
| 😀 | U+1F600 | 0xF0 0x9F 0x98 0x80 | U+D83D |
| U+0020 | 0x20 | U+0020 | |
| A | U+0041 | 0x41 | U+0041 |
概念
每个字符都住在一个编号码点上:A 是 U+0041,中是 U+4E2D。JavaScript 用 \uXXXX 转义写法表示它们。坑在于:emoji 和生僻字住在前 65536 个格子之外,所以一个 emoji 不是一个 \uXXXX,而是一对,叫代理对——比如笑脸就变成 \uD83D\uDE00。本工具两个平面都正确处理,并列出每个字符的码点、UTF-8 字节和 UTF-16 码元。
描述与趣事
为什么一个笑脸要占两个转义?因为这套系统设计时觉得 65536 个格子无限够用,而 emoji 是几十年后才来的。工程师只好打补丁:保留 D800–DFFF 区间。高位代理后接低位代理,就代表一个超大字符。这个补丁太成功了,现在谁也不敢拆。
历史与由来
Unicode 联盟于 1991 年 10 月发布了第一版 Unicode 标准。2.0 版(1996 年 7 月)把容量扩到上百万个码点,并引入带代理对的 UTF-16,由 Peter Hartke 等工程师与 Unicode 技术委员会主导——这就是今天 emoji 总是两个转义的原因。
相关关键词
unicode 转义uxxxx 转换代理对emoji unicode码点
纠错反馈
如果发现工具问题或有任何建议,欢迎通过邮箱联系我们,我们会认真查看每一条反馈。
