A
在 UTF-8 中是U+0041 LATIN CAPITAL LETTER A
. A
在 ASCII 中是065
.
UTF-8 如何与 ASCII 向后兼容?
ASCII 仅使用 8 位字节的前 7 位。00000000
所以从到 的所有组合01111111
。此范围内的所有 128 个字节都映射到特定字符。
UTF-8 保留了这些精确的映射。ASCII 中由01101011
表示的字符在 UTF-8 中也由相同的字节表示。所有其他字符都以多个字节的序列编码,其中每个字节都具有最高位集;即 UTF-8 中所有非 ASCII 字符的每个字节的格式为1xxxxxxx
.
Unicode 向后兼容 ASCII,因为 ASCII 是 Unicode 的子集。Unicode 仅使用 ASCII 中的所有字符代码并添加更多字符。
虽然字符代码在 Unicode 中通常写为 0041,但字符代码是数字的,因此 0041 与(十六进制)41 的值相同。
UTF-8 不是字符集,而是与 Unicode 一起使用的编码。它也恰好与 ASCII 兼容,因为用于多字节编码的代码位于未使用的 ASCII 字符集中部分。
注意,只有 7 位 ASCII 字符集兼容 Unicode 和 UTF-8,基于 ASCII 的 8 位字符集,如 IBM850 和 windows-1250,使用 UTF-8 有的部分字符集多字节编码的代码。
为什么:
因为一切都已经是 ASCII 并且具有向后兼容的 Unicode 格式使得采用变得更加容易。将程序转换为使用 UTF-8 比转换为 UTF-16 容易得多,并且该程序通过仍然使用 ASCII 继承了向后兼容的特性。
如何:
ASCII 是 7 位编码,但始终以 8 位字节存储。这意味着 1 位一直未被使用。
UTF-8 只是使用那个额外的位来表示非 ASCII 字符。