//通过打开对话框,窗体的FileName属性获取要打开文件的文件名
                     FileName = openFileDialog1.FileName;
                    //创建从字符串进行读取的StreamReader对象
                     //StreamReader sr = File.OpenText(FileName);                     StreamReader sr = new StreamReader(FileName, System.Text.Encoding.Default);
                     string str = "";
                    while ((str = sr.ReadLine())!=null)
                    {
                        //将读出的字符串在richTextBox1中显示
                        this.richTextBox1.Text += str;
                    }
    
为什么运行上述代码读取文件时,会出现乱码?StreamReader 

解决方案 »

  1.   

    文字存储的时候都是变成字节的,打开的时候再转回来,但是转换的规则不是只有一种。
    可以换 System.Text.Encoding.UTF8 试试。
      

  2.   

    你用工具打开那文件看一下是什么编码的,然后再设置System.Text.Encoding.Default为相应的编码,比如
    System.Text.Encoding.GetEncoding("GB2312");
      

  3.   


    根据追踪是GB2312可是我改成System.Text.Encoding.GetEncoding("GB2312")还是出现乱码!
      

  4.   


    是的,为什么啊?莫急躁=。=
    记事本打开是乱码,那就说明文件本身就是乱码的。可是我创建的是Word文档,貌似记事本除了txt文档,打开其他文档都是乱码吧!
      

  5.   

    不是乱码,能读出来!那你试试用office组件吧
      

  6.   

    不是乱码,能读出来!那你试试用office组件吧什么意思?
      

  7.   

    try add the below code to web.config   <globalization 
                requestencoding="gb2312" 
                responseencoding="gb2312" 
       />
      

  8.   

    是不是文档中有什么不支持的格式,先把文件转码 或者office文档向下兼容保存一下 再用流来读取
      

  9.   

    我试了.doc文件的读取,utf8是可以的。            string filename = "C:/Documents and Settings/Administrator/桌面/Asdf.doc";            StreamReader sr = new StreamReader(filename, System.Text.Encoding.UTF8);
                string str = "";
                while ((str = sr.ReadLine())!=null)
                {
                    //将读出的字符串在richTextBox1中显示
                    this.richTextBox1.Text += str;
                }
      

  10.   

    Word文档不能直接用文件流读取,可以使用Office的API读取文件!
      

  11.   

    System.Text.Encoding.Default 是不对的,最近也碰到过,最好使用 UTF8,或者 GB2312 之类的编码Default 多半是 ASCII,所以会乱码。
      

  12.   

    Word文档和rtf并不相同,word比rtf可是强大,支持的格式多,richTextBox1控件只能打开f=rtf格式,word的因格式没有那么丰富就会乱码,你看一在网上下个rtf格式的可以正常打开,如果想打开word可以将word嵌入到窗口中
      

  13.   

    读word文件需要用到特定的dll的,不然你读取出来会乱码的不想读txt文件那可以直接读取,去下个word的dll来操作吧,参考http://blog.csdn.net/yezi2413/article/details/3132074
      

  14.   

    word包含许多格式信息,当然不能直接用记事本或是字符串直接显示啊。