在我们的应用中,我们收到的文本文件(.txt,.csv从不同的来源,等等)。读取时,这些文件有时包含垃圾,因为这些文件是在不同/未知的代码页中创建的。
.txt
.csv
有没有办法(自动)检测文本文件的代码页?
的detectEncodingFromByteOrderMarks,对StreamReader构造,工程UTF8 和其他的Unicode标文件,但是我正在寻找一种方法来检测代码页,像ibm850,windows1252。
detectEncodingFromByteOrderMarks
StreamReader
UTF8
ibm850
windows1252
感谢您的回答,这就是我所做的。
我们收到的文件来自最终用户,他们不了解代码页。接收者也是最终用户,到目前为止,这是他们对代码页的了解:代码页存在并且令人讨厌。
解:
您无法检测到代码页,需要告知它。您可以分析字节并进行猜测,但这会带来一些奇怪(有时很有趣)的结果。我现在找不到它,但是我敢肯定,记事本可以欺骗显示中文的英文文本。
无论如何,这是您需要阅读的内容: 每个软件开发人员的绝对最低限度必须绝对肯定地了解Unicode和字符集(无借口!)。
特别是乔尔说:
关于编码的最重要的事实 如果您完全忘记了我刚才解释的所有内容,请记住一个极其重要的事实。不知道字符串使用什么编码就没有意义。您不能再将自己的头埋在沙子里,并假装“纯文本”为ASCII。没有纯文本这样的东西。 如果您在内存,文件或电子邮件中有字符串,则必须知道字符串的编码,否则无法解释它或将其正确显示给用户。
关于编码的最重要的事实
如果您完全忘记了我刚才解释的所有内容,请记住一个极其重要的事实。不知道字符串使用什么编码就没有意义。您不能再将自己的头埋在沙子里,并假装“纯文本”为ASCII。没有纯文本这样的东西。
如果您在内存,文件或电子邮件中有字符串,则必须知道字符串的编码,否则无法解释它或将其正确显示给用户。