我用以下的简单语句读一个文本文件,发现得到的字符串汉字都是乱码,英文和数字却都很正常,怎么回事?任何处理?
StreamReader sr = new StreamReader(@"C:\a.txt");
string s = sr.ReadToEnd();改用方法sr.ReadLine()也一样对汉字是乱码!加参数Encoding.Unicode等5种编码方式,都不行!怎么办?

解决方案 »

  1.   

    StreamReader sr = new StreamReader(@"C:\a.txt",System.Text.Encoding.Default);
      

  2.   

    StreamReader sr = new StreamReader(@"C:\a.txt",System.Text.Encoding.Default);
    //解释一下,System.Text.Encoding.Default是取系统默认编码方式!
      

  3.   

    .NET默认的编码是UTF-8,无法读取GB2312的文件,这种情况下一般用:
    StreamReader sr = new StreamReader(@"C:\a.txt", System.Text.Encoding.GetEncoding(936), true);
    来解决。true是让Framework来检测Byte Order Mask(BOM),如果文件有BOM,就会根据BOM设置成文件实际的编码,如果没有BOM,就按第二个参数所制定的编码来读取。
    这是一种比较好的兼容方式,如果不设置true,那么就只能读取GB2312文件,而无法读取Utf-8了。Default依赖于操作系统的语言设置,如果读简体中文,就用gb2312