Skip to content

Latest commit

 

History

History
31 lines (20 loc) · 2.16 KB

File metadata and controls

31 lines (20 loc) · 2.16 KB

(译)2023 年每个软件开发者都必须知道的关于 Unicode 的基本知识 | 新世界的大门

TL;DR

Unicode是全球字符统一编码标准,通过唯一码位确保跨平台兼容。UTF-8凭借与ASCII兼容和高效性(占98%)成为主导编码。需注意码位范围0-0x10FFFF,私用区支持定制字符;字符串应基于“扩展字素簇”处理(如组合字符é),而非字节;归一化形式(如NFC)和区域设置影响字符操作;Unicode持续更新需同步库版本。开发者应采用UTF-8并依赖专用库(如ICU)简化处理,确保文本正确。

Summary

Unicode 是统一所有人类语言字符的标准,通过唯一编码(码位)确保跨平台兼容。当前 UTF-8 是最广泛使用的编码方式,占全球文本的98%,因其与ASCII兼容且高效。关键点如下:

  1. 码位与编码

    • Unicode码位范围0-0x10FFFF(约110万),当前已分配约17万,私用区占11%用于自定义字符(如Apple符号)。
    • UTF-8为可变长编码(1-4字节),兼容ASCII,但需注意字节操作可能导致乱码(如�)。
  2. 字素与字符串处理

    • 字符串长度计算应基于"扩展字素簇"(用户视为单一字符的序列),而非字节或码位。例如组合字符ée + ´)需整体处理。
    • 编程语言如Swift默认支持字素处理,其他语言需依赖库(如ICU)来正确分割或比较字符串。
  3. 归一化与区域设置

    • 字符可有多种编码形式(如预组合或分解形式),归一化(NFD/NFC/NFKD/NFKC)确保等效字符一致处理。
    • 大小写转换、排序等依赖区域设置(如土耳其语i的特殊规则),需传入Locale参数。
  4. 历史遗留与实践

    • UTF-16通过代理对(surrogate pairs)扩展码位,但UTF-8因效率成为主导。
    • Unicode持续更新(每年版本),需确保库与标准同步,避免兼容性问题。

开发者应拥抱UTF-8,使用专用Unicode库处理字素、归一化等复杂性,确保多语言文本正确无误。