0

我有文本文件,我怎么知道文件中的文本是 UTF8 标准还是 Mac OS Roman

4

2 回答 2

1

UTF-8 文件可以以字节顺序标记 (BOM)开头,这将使它们易于识别。

如果他们不这样做,您无法确定,但基本上需要编写代码来做出有根据的猜测。

有几种方法可以进行猜测;

  • 扫描文件中是否存在非法 UTF8 序列,如果存在,则文件应该是 MacRoman。
  • 扫描您正在阅读的文件中的“常用”字符,如果它们是 ascii 128 或更高,它们将在 UTF-8 和 MacRoman 中以不同方式编码。

两种编码之间的所有字符 <= ascii 127 都应该相同,因此如果文件中只有这些,则编码无关紧要,它将产生相同的文本。

于 2012-10-04T21:01:24.943 回答
1

对于单个文件,实际操作是在网络浏览器中打开它,并通过浏览器的查看菜单测试它在两种编码中的外观。如果编码很重要(即,Ascii 范围 0-127 之外的字符),您通常应该立即看到差异(至少如果您可以阅读文档的语言)。

在编程中,如果您需要设置一个通用工具来自动解决此类问题,最好尝试读取两种编码的文件(使用您喜欢的编程语言和工具)并检查是否成功。如果两种方法都成功,请检查它是否也可以读取为 Ascii - 如果可以,答案很简单(文件是 UTF-8 和 MacRoman 编码的),如果不能,则需要一些额外的逻辑。原则上,此时需要检查内容,因为数据可以在编码级别进行双向解释,并且只有内容才能确定哪种解释是正确的。

于 2012-10-04T21:17:24.637 回答