ISO编码的BOM(byte order mark)

BOM (byte order mark) of ISO Encoding

是否有ISO-8859-1ISO-8859-2编码的BOM?

没有。对于每个(除了例外)字符都是一个字节的编码,不需要 BOM(字节顺序标记)。 BOM 用于确定哪些字节顺序具有 16 位(或 32 位)数字:各种处理器使用不同的约定,不同的协议也不同:互联网 (IP) 使用不同的顺序作为常见的 Intel 处理器(以及常见的操作系统) .

注意:众所周知,一家大公司 (Microsoft) 会为了自己的利益而打破标准,因此它开始将不必要的(而且经常是错误的)BOM 也放到 UTF-8 中。 (UTF-8 可能会在少数特定情况下使用 BOM)。不要掉入陷阱。 Unix、Linux 和 Apple 能够在几乎没有中断的情况下转到 UTF-8。

编码信息应该放在带外(例如由协议指定)。没有别的办法。而在旧的 8 位字符集上,没有空间包含此类信息(256 个字符已经不够)。 Python有些编辑器会在文件的开头或结尾查看签名(一行文本),但在源代码之外很难看),并非所有编辑器都使用此类信息。

否则,通常的方法:尝试将其解码为UTF-8(如果没有00字节,在这种情况下,请检查UTF-16和UTF-32),如果有错误,请尝试使用Latin- 1 或其他(您需要一本包含多种语言常用词的词典)。无论如何,有很多启发式方法(因此:“猜测”),并且人们永远不确定编码(只是在为人类制作的大文本上:猜测的可能性很高)。