怎样正确读取不同编码格式的文件中的内容?(针对文本文件,有很多编码格式,UTF-8,Unicode,ANSII,UIF-32等)    在控制台里,我用StreamReader就可以将文件正确的读取,而不用考虑文件的格式;而在Windows Form里有时候会出错,纳闷儿,为什么会出现这种情况?RichTextBox里是Unicode编码,就是因为这个吧?
    我用RichTextBox的LoadFile方法可以正确的读取,但事先要用GetExtension()判断文件的扩展名来确定用什么格式,才能正确的读取。用ReadAllLines()方法都要判断一下文件的编码格式,很麻烦。
    必须这样做么?有没有好的办法?可以不用判断文件的编码格式来正确读取文件?比如读如到RichTextBox中。

解决方案 »

  1.   

    这些编码比较普及,UTF-8,Unicode,ANSII,在.NET里面默认的是utf-8,utf-8是一种变长编码,里面对于ascii字符用一个字节,大部分汉字用两个字节,还有些则用3个字节,如果文档中中英文各占一半,一般利用utf8编码能够节约空间,所以用utf8编码方式肯定能够正确处理你的文本文档。
    在.NET里面处理文本文档一般用StreamReader和StreamWriter,注意:只有第一个参数是必须的,其他的是默认参数StreamReader sr = new StreamReader("User.txt", System.Text.Encoding.UTF8);
    string strLine = sr.ReadLine();
    if(strLine.Equals("0"))
    {
        this.cmbType.SelectedIndex = 0;
    }
    ...
    string sLine;
    StreamWriter sw = new StreamWriter("User.txt", false, System.Text.Encoding.UTF8);
    if(this.cmbType.SelectedIndex == 0)
    {
        sw.WriteLine("0");
    }
      

  2.   

    我觉得用System.Text.Encoding.Default会好些