Unicode 是国际统一的字符集,为世界上的文字、符号和 emoji 分配唯一码点(U+0000–U+10FFFF,共 17 个平面)。下面重点说明耗时与规模。
Unicode的性能要点
码点只是编号,不直接等于字节数。字节数取决于选定的 UTF 编码:UTF-8 为 1–4 字节,UTF-16 为 2 或 4 字节,UTF-32 固定 4 字节。
示例
输入:123问
码点结果:1=U+0031,2=U+0032,3=U+0033,问=U+95EE
说明:码点是抽象编号,具体存盘还要选 UTF-8 或 UTF-16 等编码。
规则说明
- 书写码点用 U+ 加 4 至 6 位十六进制
- 不要把码点和字形、字体混为一谈(同一个字可能有不同字形)
- 规范化(NFC/NFD)会改变“一个字符”的组合方式
- 大小写转换、排序依赖具体语言的 Unicode 算法(UCA)
Go 示例
下面是 Go 中处理Unicode的常用写法:
for _, r := range "中😀" { fmt.Printf("%U ", r) }运行前确认输入的字符集(推荐 UTF-8),结果可以用本站工具交叉核对。
本站的Unicode转换工具可以直接处理,计算在浏览器本地完成,适合快速核对结果。
常见问题
【“中”的码点是多少?】U+4E2D。
【一共有多少个码点位置?】0x110000 个位置(含代理区和未分配点),有效字符随标准版本增加。
【为什么两个看起来一样的字比较不相等?】可能一个是组合字符(字母+注音),一个是预合成字符,需要先规范化。
文中示例可以在本站对应工具中验证;处理密钥、证书等敏感数据时,请注意保护隐私。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。