最近用C#涉及到一些读取 txt文本文件的操作,但是一个编码问题就困惑了我好久。如果编码选的不对,会造成乱码。之前转载的一片文章提出了一种解决方法,就是用new StreamReader(file, Encoding.Default)。这种方法解决了大部分问题,但是测试中发现对于有的UTF-8文件依然会造成乱码(中文windows环境)。
于是上网搜索解决方案。大多数是说UTF-8有特殊的前导码EF BB BF,只要认出这个就能判定是UTF-8编码了。但是我测试的一个文件发现前面并
没有这些前导码啊…于是继续搜索……
先转一篇直接知道怎么做的博文:
http://blog.csdn.net/zdg/archive/2005/01/29/272643.aspx
一)需求
很多情况下我们需要知道字节流的编码,比如
1) 使用编辑器打开文本文件的时候,编辑器需要识别文本文件的各种编码
2) 上传文件后,分析上传文件字节流需要知道它的编码
二)探讨
不过C#目前还没有现成的函数能够获取,经过和同事的探讨,发现UTF8文件都有一个3字节的头,为“EF BB BF”(称为BOM--Byte Order Mark),判断这个头信息不就可以解决了吗?代码如下: