这是一个正在进行中的作品。完全不完整,但希望足够有用以发布。请记住,这是一份测试质量的文档。如果您有任何更正意见,我很乐意收到。请发邮件给我!(点击此处查看其他指南!) 内容概要: HTML: PDF: * US Letter, 单面, 语法高亮 * US Letter, 双面, 语法高亮 * A4, 单面, 语法高亮 * A4, 双面, 语法高亮 * US Letter, 单面, 黑白 * US Letter, 双面, 黑白 * A4, 单面, 黑白 * A4, 双面, 黑白 给翻译者和作者: 从GitHub克隆整个项目,并遵循README文件。 联系Beej: [email protected]
## Unicode 奇妙之处:深入探讨
许多人认为 Unicode 只是“提供表情符号的系统”,但它实际上是一个令人惊讶的复杂系统,用于表示所有人类语言——而其复杂性源于语言本身的内在混乱。本次探索将深入研究在使用 Unicode 时遇到的一些鲜为人知的怪癖。
排序、标准化和字符表示是主要挑战。简单的排序可能会失败,因为码点顺序与语言规则不同(例如,“é”排序在“f”之后)。标准化试图标准化字符,但可能会意外地分解韩语和日语等语言,从而改变含义。
字符串并不总是表面上看起来那样;JavaScript 将某些字符(如表情符号)视为多个代码单元,因为使用了 UTF-16 编码。不同的系统对字符宽度处理不一致——谚文字符、表情符号甚至空格在终端中的渲染可能无法预测。
除了基本字符外,Unicode 还包括具有视觉表示的控制字符、为汉语和日语等语言提供的注释系统,甚至用于文本的方向标记。驾驭这些复杂性需要了解编码、字体支持以及 `wcwidth` 等工具的局限性。最终,Unicode 的深度表明,处理文本很少像看起来那么简单。