💡
原文中文,约6000字,阅读约需15分钟。
📝
内容提要
本文介绍了字符编码的发展,从最初的ASCII码表到统一的Unicode编码,解决了乱码问题。还讨论了字符编码到字体的转换以及处理复杂编码的方法。
🎯
关键要点
- 1 bit 是 1 个 1 或 0,1 byte = 8 bit,1 byte 可以表达 256 个数字。
- 码表是数值与字符的对应关系,最初的码表是 ASCII,后来扩展为 ISO-8859-1 和 Windows-1252。
- 不同国家制定了适合本国文字的码表,如中国的 GBK 和 Big5、日本的 Shift-JIS、韩国的 EUC-KR。
- 编码超过 256 个字符时,需要使用多个字节表示,必须有明确标志告知字节数。
- Unicode 统一了所有编码,包含了地球上所有语言字符,解决了乱码问题。
- Unicode 有 10FFFF 个码点,基本多语言平面(BMP)是最重要的部分。
- Unicode 可以编码成 UTF-8 和 UTF-16,UTF-8 支持变长编码,UTF-16 则固定为 16 位。
- Unicode 允许多个码点组合成一个字符,例如组合 Emoji。
- 字体是从编码到显示的关键,常见字体格式有 ttf、otf、woff、woff2。
- 不同地区的同一码点可能有不同字形,繁简体汉字有不同的码点。
- 在 Unicode 统一后,编程语言的字符串大多使用 Unicode 编码,JavaScript 使用 UTF-16。
- charAt、charCodeAt 和 codePointAt 方法在处理字符时有不同的返回值,尤其是对于代理对和组合字符。
➡️