为了账号安全,请及时绑定邮箱和手机立即绑定

如何检测文本文件的编码/代码页

如何检测文本文件的编码/代码页

偶然的你 2019-06-09 16:33:07
如何检测文本文件的编码/代码页在我们的应用程序中,我们接收文本文件(.txt, .csv等等)来自不同的来源。读取时,这些文件有时包含垃圾,因为在不同的/未知代码页中创建的文件。是否有方法(自动)检测文本文件的代码页?这个detectEncodingFromByteOrderMarks,在StreamReader构造函数,为UTF8和其他Unicode标记的文件,但是我正在寻找一种检测代码页的方法,例如ibm850, windows1252.谢谢你的回答,这就是我所做的。我们收到的文件来自最终用户,他们对代码页一无所知。接收者也是终端用户,这是他们现在所知道的代码页:代码页存在,而且很烦人。解决办法:在记事本中打开接收到的文件,看一看乱七八糟的文本。如果有人叫弗朗索瓦什么的,用你的人类智慧,你可以猜到这一点。我创建了一个小应用程序,用户可以用它打开文件,并输入一个用户知道它会出现在文件中的文本,当使用正确的代码页时。循环遍历所有代码页,并使用用户提供的文本显示给出解决方案的代码页。如果弹出多个代码页,请用户指定更多文本。
查看完整描述

3 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

你不能检测到代码页,你需要被告知。您可以分析字节并猜测它,但这可能会给出一些奇怪的(有时是有趣的)结果。我现在找不到,但我相信记事本可以被骗到用中文显示英文文本。

不管怎么说,这是你需要读的:每个软件开发人员绝对、积极的绝对最低限度必须了解Unicode和字符集(没有借口!).

特别是乔尔说:

关于编码的一个最重要的事实

如果你完全忘记了我刚才解释的一切,请记住一个非常重要的事实。在不知道字符串使用什么编码的情况下使用字符串是没有意义的。你不能再把头伸进沙子里,假装“纯文本”是ASCII。没有纯文本这样的东西。

如果您有字符串、内存中、文件中或电子邮件中的字符串,则必须知道它所使用的编码方式,或者无法正确地解释或显示给用户。


查看完整回答
反对 回复 2019-06-09
?
森林海

TA贡献2011条经验 获得超2个赞

如果您希望检测非UTF编码(即没有BOM),您基本上可以通过启发式和统计分析来分析文本。你可能想看看Mozilla关于通用字符集检测的论文 (相同的链接,通过Wayback机器进行更好的格式化).


查看完整回答
反对 回复 2019-06-09
  • 3 回答
  • 0 关注
  • 764 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信