如何检测文本文件编码?

时间:2011-10-04 12:43:06

标签: c# .net

  

可能重复:
  How can I detect the encoding/codepage of a text file

我目录中有很多txt文件。我必须找到所有UTF-8编码的。 如何实现?

2 个答案:

答案 0 :(得分:2)

您无法完全检测任意文本编码,因为您永远无法知道随机字节串是什么意思。您可以问的唯一有意义的问题是“我可以将此数据正确解释为UTF-8”。

回答最简单的方法是在文件上运行您喜欢的任何编码转换器并检查错误(例如iconv()或来自ICU的内容,或C#提供的任何内容。如果你想手动,你必须逐个字节地检查文件并检查是否所有内容都形成了正确的UTF-8代码序列。验证与完全转换(到UTF-32)的工作量基本相同,因为对于正确的验证,您不仅要检查所有字节是否构成完整的代码序列,还要检查编码的值是本身就是一个有效的Unicode代码点。

自己编写这个是一个有趣的小练习,但最快的解决方案是使用库函数。

答案 1 :(得分:1)

在没有任何元数据的文本文件中,这可能无法分辨。