哪为仁兄能告诉我,C#中怎么才能动态获得将要读取的文件的编码方式呢?
谢谢,因为这事儿我郁闷半宿了!

解决方案 »

  1.   

    读前面几个字节判断一下就可以了
    比如Ansi文件开头直接是文件内容(字符编码),Unicode文件开头两个字节是FF FE
      

  2.   

    其他编码就比较麻烦可以在StreamReader构造函数中指定
    detectEncodingFromByteOrderMarks
    参数,指示在文件头查找字节顺序标记
    detectEncodingFromByteOrderMarks 参数通过查看流的前三个字节来检测编码。如果文件以适当的字节顺序标记开头,该参数自动识别 UTF-8、Little-Endian Unicode 和 Big-Endian Unicode 文本。否则,使用用户提供的编码。StreamReader.CurrentEncoding属性
    获取当前StreamReader正在使用的当前字符编码
    先读取另
    Encoding.GetPreamble方法
    返回一组字节,这组字节在流的开头用于确定创建文件时所使用的编码。这可能包括 Unicode 字节顺序标记。