我读过这个很棒的教程
http://www.joelonsoftware.com/articles/Unicode.html
但我不明白UTF-8如何解决高端、低端机器的问题。 对于1byte来说,还可以。 对于多字节,它是如何工作的?
有人可以解释得更好吗?
这里有一个深入解释 UTF-8 的链接。 http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
其核心是,UTF-16 是面向短整数(16 位)的,而 UTF-8 是面向字节的。由于架构在数据类型的字节排序方式(大端、小端)方面可能有所不同,因此 UTF-16 编码可以采用任何一种方式。在我所知的所有架构上,半字节或半八位字节级别都没有字节序。所有字节都是一系列连续的 8 位。因此 UTF-8 没有字节序。
日语字符“あ”就是一个很好的例子。它是 U+3042(二进制=0011 0000:0100 0010)。
UTF-8 不存在字节序问题。 UTF-16 会出现问题,因为在将两个字节块的序列写入文件或通信流时,需要将其视为字节块的序列,这可能对两个字节中的字节顺序有不同的想法。字节数。由于 UTF-8 在字节级别工作,因此 BOM 无需能够在大端和小端机器上正确解析序列。字符是否是多字节并不重要:UTF-8 准确定义了在代码点的多字节编码情况下字符应该出现的顺序。
UTF-8 中的 BOM 是用于完全不同的东西(好吧,所以“字节顺序标记”这个名称有点“不对劲”)。它表明“这将是一个 UTF-8 流”。 UTF-8 BOM 通常不受欢迎,许多程序不能正确支持它。网站 utf8everywhere.org 认为它将来应该被弃用。
Utf-8 没有字节序,因为只传输一个字节,不可能有字节序,因为每个字节都是按顺序处理的。也就是说,BOM 在 utf-8 中没有用,如果存在,则始终以相同的字节序列传输。