12

A在 UTF-8 中是U+0041 LATIN CAPITAL LETTER A. A在 ASCII 中是065.

UTF-8 如何与 ASCII 向后兼容?

4

3 回答 3

26

ASCII 仅使用 8 位字节的前 7 位。00000000所以从到 的所有组合01111111。此范围内的所有 128 个字节都映射到特定字符。

UTF-8 保留了这些精确的映射。ASCII 中由01101011表示的字符在 UTF-8 中也由相同的字节表示。所有其他字符都以多个字节的序列编码,其中每个字节都具有最高位集;即 UTF-8 中所有非 ASCII 字符的每个字节的格式为1xxxxxxx.

于 2013-04-12T07:52:27.753 回答
7

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 有的部分字符集多字节编码的代码。

于 2013-04-12T07:55:48.783 回答
6

为什么:

因为一切都已经是 ASCII 并且具有向后兼容的 Unicode 格式使得采用变得更加容易。将程序转换为使用 UTF-8 比转换为 UTF-16 容易得多,并且该程序通过仍然使用 ASCII 继承了向后兼容的特性。

如何:

ASCII 是 7 位编码,但始终以 8 位字节存储。这意味着 1 位一直未被使用。

UTF-8 只是使用那个额外的位来表示非 ASCII 字符。

于 2013-04-12T07:53:04.570 回答