Unicode 是国际统一的字符集,为世界上的文字、符号和 emoji 分配唯一码点(U+0000–U+10FFFF,共 17 个平面)。下面重点说明开发场景下的含义。
Unicode在开发中是什么
Unicode 是国际统一的字符集,为世界上的文字、符号和 emoji 分配唯一码点(U+0000–U+10FFFF,共 17 个平面)。它本身不是一种“存盘编码”:把码点写成文件还需要 UTF-8、UTF-16 或 UTF-32。汉字“中”的码点是 U+4E2D。
- 码点范围 U+0000–U+10FFFF,17 个平面
- BMP(第 0 平面)包含常用汉字、拉丁字母等
- 中日韩统一表意文字从 U+4E00 起
示例
输入:Man
码点结果:M=U+004D,a=U+0061,n=U+006E
说明:码点是抽象编号,具体存盘还要选 UTF-8 或 UTF-16 等编码。
Go 示例
下面是 Go 中处理Unicode的常用写法:
for _, r := range "中😀" { fmt.Printf("%U ", r) }运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
乱码排查
乱码通常出在“编码层”(UTF-8 被按 GBK 读),而不是码点本身错了。先用正确编码还原字符,再看码点。
本站的Unicode转换工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【为什么两个看起来一样的字比较不相等?】可能一个是组合字符(字母+注音),一个是预合成字符,需要先规范化。
【emoji 是一个字符吗?】一个 emoji 可能由多个码点组成(例如带修饰符或 ZWJ 序列)。
【Unicode 和 UTF-8 是一回事吗?】不是。Unicode 规定“字符编号”,UTF-8 规定“编号怎么变成字节”。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。