UTF-8
中的A
是U+0041 LATIN CAPITAL LETTER A
,而在ASCII
中则是065
。
UTF-8
如何与ASCII
实现向后兼容?
ASCII 只使用 8 位字节的前 7 位,即从 00000000
到 01111111
的所有组合。在此范围内的所有 128 个字节都映射到特定的字符。
UTF-8 保留这些确切的映射。ASCII 中由 01101011
表示的字符在 UTF-8 中也由同一字节表示。所有其他字符都以多字节序列编码,在其中每个字节都具有最高位设置;即 UTF-8 中所有非 ASCII 字符的每个字节都是 1xxxxxxx
的形式。
0x00 0x41
?如果是前者,那就是字母“A”,在UTF-8中与ASCII相同,所以完全没有问题。如果是后者,那就是一个NUL
(空字符)字节后面跟着一个“A”,这在ASCII和UTF-8中都是相同的。我觉得你还没有真正理解重点,建议阅读每个程序员绝对必须知道的有关编码和字符集处理文本的知识。 - deceze为什么:
因为所有内容都已经是ASCII编码,而且有一个向后兼容的Unicode格式,使得采用更容易。将程序转换为使用UTF-8比UTF-16要容易得多,并且该程序通过仍然与ASCII一起工作来继承向后兼容的特性。
如何:
ASCII是7位编码,但始终存储在字节中,即8位。这意味着1位始终未使用。
UTF-8简单地使用那个额外的位来表示非ASCII字符。