工作原理
下面来详细看看 UTF-8 是如何工作的,以及为什么它会根据被编码的字符具有不同的长度。
UTF-8 以动态方式存储数字。Unicode 列表中的第一个占用 1 个字节,最后一个最多占用 4 个字节,如果处理的是英文文件,大多数字符可能只占用 1 个字节,与 ASCII 中的相同。这是通过用不同的字节数覆盖 Unicode 中的不同范围来实现的。
例如,要编码原始 ASCII 表中的字符(0-127),只需要 7 位,因为 27= 128。因此,可以将所有内容存储在 8 位的 1 字节中,并且仍然剩余一个空闲空间。而对于下一个范围(128-2047),就需要 11 bits,因为211=2048,在 UTF-8 中就是 2 个字节。
计算机在读取 UTF-8 中以 0 开头的内容时,就知道只需要读取一个字节并显示 Unicode 中 0-127 范围内的正确字符即可。如果遇到两个 1,就需要读取 2 个字节,范围为128-2047,3 个 1 在一起表示需要读取三个字节。