软件的工业化生产

导航

彻底搞定Encoding问题

         最近由于在做一个国际化的工具,必须要确切知道源代码文件的编码(Encoding)
  

          但是System.Text下面没有相应的Class和Function支持, 虽然读取文件时使用的是System.Io.StreamReader, 但试用了好几个构造器,
       System.Io.StreamReader(string Path) ,       System.IO.StreamReader.New(string path, detectEncodingFromByteOrderMarks)等方法, 有时读出来的还是乱吗,
使用制定的Encoding(System.Text.Encoding.Default,System.Text.Encoding.UTF* )来读文件 ,还是不行。

         但VisualStudio总是能正确读出来, 那说明办法总是有的。 在Encoding问题上, 我相信许多程序员都在此花费了不少的精力, 这都要归责于微软, 一是FrameWork应该提供自动检测文件Encoding的支持, 还有就是StreanReader的构造器没有正确实现。既然提供了detectEncodingFromByteOrderMarks参数, 读出来的就不应该是乱码。

       好了, 废话不说了, 上网找了一通。 在CodeProject中找到了一个自动检测Encoding的开源类库,不过一试,EncodingTools.DetectInputCodepages读出来的Encoding有时还是不对, 通过跟踪代码, 发现了一个小Bug, 我已经修改了此Bug, 读出来的就对了。 相关源码我将发布在www.dotnetcoding.net网站上

posted on 2008-05-04 11:48  堂吉柯德  阅读(724)  评论(0编辑  收藏  举报