Hasty Briefsbeta

双语

Dark Corners of Unicode (2015)

6 months ago
  • #programming
  • #text-rendering
  • #unicode
  • Unicode是一个旨在表示所有人类语言的复杂系统,但即便是程序员也常对其存在误解。
  • Unicode包含ASCII之外的字符(如表情符号),并使用码位(codepoints)来表示它们。
  • UTF-8是一种能表示所有Unicode码位的编码,而ASCII仅限128个字符。
  • Unicode字符可由多个码位组成,例如组合变音符号或表情符号序列。
  • 由于语言特定规则和规范化问题,Unicode文本的排序和比较并非易事。
  • Unicode规范化可以分解字符,但并不能解决所有问题,尤其是非拉丁文字。
  • 终端和字体对Unicode字符(尤其是表情符号和组合字符)的渲染可能不一致。
  • JavaScript等语言在处理Unicode时存在局限,特别是辅助平面字符(astral plane)。
  • MySQL的'utf8'编码每字符仅限3字节,导致辅助平面字符出现问题。
  • 表情符号并非正式的Unicode区块,而是分散在不同区块中并由使用习惯定义。
  • Unicode包含许多有趣而冷门的字符,从控制符图形到炼金术符号应有尽有。