知识卡片
ASCII 的局限与 Unicode+UTF-8 的解法
内容
ASCII 用 7 位(后扩展为 8 位)编码英文字母、数字和标点,扩展 ASCII 虽然为不同语种各自定义了 128 个附加符号,但一份文档只能选定一种扩展标准,无法在同一文档里混用多种语言的字符,也放不下汉语、日语这类字符数量庞大的语言。Unicode 用统一的 21 位模式为世界上所有常用字符各自分配唯一编码,解决了”编码不够用”和”多语言不能共存”两个问题;UTF-8 则是一种变长的落地编码,让原来的 ASCII 字符仍只占 8 位,同时给生僻字符留出更长的编码空间,兼顾了向后兼容与全字符覆盖。发散:Unicode/UTF-8 的分层设计——先定义”字符到数字”的统一映射,再单独定义”数字到字节”的可变长编码——是一种把”覆盖面”和”存储效率”两个互相冲突的目标拆到两层分别解决的思路,类似的分层套路在协议设计里也很常见。
参考来源
《计算机科学概论》第1章《数据存储》