当前位置:编程学习 > C#/ASP.NET >>

StreamReader


                    //通过打开对话框,窗体的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  --------------------编程问答-------------------- 文字存储的时候都是变成字节的,打开的时候再转回来,但是转换的规则不是只有一种。
可以换 System.Text.Encoding.UTF8 试试。 --------------------编程问答-------------------- 说过啦,也是不行!还是出现乱码 --------------------编程问答-------------------- 你用工具打开那文件看一下是什么编码的,然后再设置System.Text.Encoding.Default为相应的编码,比如
System.Text.Encoding.GetEncoding("GB2312"); --------------------编程问答--------------------
引用 3 楼 dongxinxi 的回复:
你用工具打开那文件看一下是什么编码的,然后再设置System.Text.Encoding.Default为相应的编码,比如
System.Text.Encoding.GetEncoding("GB2312");


根据追踪是GB2312可是我改成System.Text.Encoding.GetEncoding("GB2312")还是出现乱码!
--------------------编程问答-------------------- 你用记事本打开是否乱码? --------------------编程问答--------------------
引用 5 楼 qldsrx 的回复:
你用记事本打开是否乱码?


是的,为什么啊? --------------------编程问答-------------------- 我的是word文档 --------------------编程问答--------------------
引用 6 楼 yali_0509 的回复:
Quote: 引用 5 楼 qldsrx 的回复:

你用记事本打开是否乱码?


是的,为什么啊?
莫急躁=。=
记事本打开是乱码,那就说明文件本身就是乱码的。 --------------------编程问答--------------------
引用 8 楼 danding_ge 的回复:
Quote: 引用 6 楼 yali_0509 的回复:

Quote: 引用 5 楼 qldsrx 的回复:

你用记事本打开是否乱码?


是的,为什么啊?
莫急躁=。=
记事本打开是乱码,那就说明文件本身就是乱码的。


可是我创建的是Word文档,貌似记事本除了txt文档,打开其他文档都是乱码吧! --------------------编程问答-------------------- 写字板乱码么? --------------------编程问答--------------------
引用 10 楼 danding_ge 的回复:
写字板乱码么?

不是乱码,能读出来! --------------------编程问答--------------------
引用 11 楼 yali_0509 的回复:
Quote: 引用 10 楼 danding_ge 的回复:

写字板乱码么?

不是乱码,能读出来!
那你试试用office组件吧 --------------------编程问答--------------------
引用 12 楼 danding_ge 的回复:
Quote: 引用 11 楼 yali_0509 的回复:

Quote: 引用 10 楼 danding_ge 的回复:

写字板乱码么?

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


什么意思? --------------------编程问答-------------------- try add the below code to web.config

   <globalization 
            requestencoding="gb2312" 
            responseencoding="gb2312" 
   /> --------------------编程问答-------------------- 是不是文档中有什么不支持的格式,先把文件转码 或者office文档向下兼容保存一下 再用流来读取 --------------------编程问答-------------------- 我试了.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;
            }
--------------------编程问答-------------------- Word文档不能直接用文件流读取,可以使用Office的API读取文件! --------------------编程问答-------------------- System.Text.Encoding.Default 是不对的,最近也碰到过,最好使用 UTF8,或者 GB2312 之类的编码Default 多半是 ASCII,所以会乱码。 --------------------编程问答-------------------- Word文档和rtf并不相同,word比rtf可是强大,支持的格式多,richTextBox1控件只能打开f=rtf格式,word的因格式没有那么丰富就会乱码,你看一在网上下个rtf格式的可以正常打开,如果想打开word可以将word嵌入到窗口中 --------------------编程问答-------------------- 读word文件需要用到特定的dll的,不然你读取出来会乱码的不想读txt文件那可以直接读取,去下个word的dll来操作吧,参考http://blog.csdn.net/yezi2413/article/details/3132074 --------------------编程问答-------------------- 你的文档保存的时候 是用什么编码编码方式保存的? --------------------编程问答-------------------- word包含许多格式信息,当然不能直接用记事本或是字符串直接显示啊。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,