在Windows中识别unicode编码文本文件的最佳方法是什么?

时间:2011-01-12 18:45:36

标签: windows search unicode

我正在开发一个代码库,由于多个团队成员使用不同的编辑器(以及默认设置)进行开发,因此分散了一些unicode编码文件。我想通过查找所有unicode编码文件并将它们转换回ANSI编码来清理我们的代码库。

任何有关如何完成此任务的“发现”部分的想法都将得到真正的体会。

5 个答案:

答案 0 :(得分:5)

请参阅“How to detect the character encoding of a text-file?”“How to reliably guess the encoding [...]?”

  • 可以通过验证检测UTF-8。您还可以查找BOM EF BB BF,但不要依赖它。
  • 可以通过查找BOM来检测UTF-16。
  • 可以通过验证或BOM检测UTF-32。
  • 否则采用ANSI代码页。
  

我们的代码库不包含任何内容   非ASCII字符。我会尝试grep   对于我们的代码库中的文件中的BOM。   谢谢你的澄清。

这样可以简化 lot 。没有非ASCII字符的UTF-8是 ASCII。

答案 1 :(得分:4)

Unicode是标准,它不是编码。有许多编码实现Unicode,包括UTF-8,UTF-16,UCS-2等。将这些编码中的任何一种转换为ASCII完全取决于“不同编辑者”使用的编码方式。

某些编辑器在Unicode文件的开头插入BOM的字节顺序标记。如果你的编辑那样做,你可以用它们来检测编码。

ANSI是一个标准组织,已经发布了几种数字字符数据编码。 MS DOS使用并在Windows中支持的“ANSI”编码实际上是CP-1252,而不是ANSI标准。

您的代码库是否包含非ASCII字符?使用Unicode编码而不是ANSI编码或CP-1252可能具有更好的兼容性。

答案 2 :(得分:2)

实际上,如果你想在windows中找到一个文件是unicode,只需在文件上运行findstr,找到你知道的字符串。

findstr / I / C:“SomeKnownString”file.txt

它会变回空洞。然后,确保在您知道的文件或数字上运行findstr:

FindStr / I / C:“P”file.txt

你可能会遇到很多事情,关键是他们会分开。这是文件是unicode而不是ascii的标志。

希望这有帮助。

答案 3 :(得分:1)

如果您正在寻找程序化解决方案,IsTextUnicode()可能是一种选择。

答案 4 :(得分:0)

这很难说,但我首先要寻找一个BOM。大多数编写Unicode文件的Windows程序会发出BOM。

如果你的代码库中存在这些文件,可能是他们编译的。您可能会问自己是否真的需要这样做“整理”。如果您确实需要这样做,那么我会问处理这些文件的工具链如何发现它们的编码。如果您知道,那么您将能够使用相同的诊断。