带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(7) https://developer.aliyun.com/article/1240880?groupCode=tech_library
10.5、UTF-8
10.5.1概述
Unicode还是UCS最初都是采用多字节定长编码,由于没有兼容现有的 ASCII 标准的文件和软件,新标准很难被推广,于是兼容ASCII版本的UTF-8就诞生了。
UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,是现代字符编码模型中的第三层 CEF 。它可以用一至四个字节对 Unicode 字符集中的所有有效编码点进行编码,属于Unicode标准的一部分,UTF-8 就是为了解决向后兼容 ASCII 码而设计,Unicode 中前 128 个字符(与 ASCII 码一一对应),使用与 ASCII 码相同的二进制值的单个字节进行编码,这使得原来处理 ASCII 字符的软件无须或只须做少部分修改,即可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或发送文字优先采用的编码方式。
—— 维基百科
UTF-8需要兼容ASCII,所以也需要有前缀码来控制,前缀规则如下:
- 1)如果首字节以 0 开头,则是单字节编码(即单个单字节码元);
- 2)如果首字节以 110 开头,则是双字节编码(即由两个单字节码元所组成的双码元序列);
- 3)如果首字节以 1110 开头,则是三字节编码(即由三个单字节码元所组成的三码元序列),以此类推。
理论上UTF-8变长可以超过4个字节,只是Unicode联盟规范上限是10FFFF,所以UTF-8规则设计上也限制了大小。
带你读《全景揭秘字符编码》之十:常见字符编码4:UNICODE(9) https://developer.aliyun.com/article/1240878?groupCode=tech_library