0

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

4

1 回答 1

2

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

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

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

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

于 2021-08-26T11:29:42.123 回答