黑马程序员技术交流社区

标题: 流操作问题? [打印本页]

作者: guobin_lu    时间: 2013-3-30 16:36
标题: 流操作问题?
  1. using (Stream stream = File.OpenRead(@"c:\3.txt"))
  2.             {
  3.                 //如果是读取文本流,就可以通过StreamReader来简化
  4.                 //因为StreamReader负责在byte[]和string之间转换,所以需要指定编码
  5.                 using (StreamReader reader =
  6.                     new StreamReader(stream, Encoding.UTF8))
  7.                 {
  8.                     string s;
  9.                     //ReadLine读取一行,如果没有数据可读则返回null
  10.                     //指针自动下移。和SqlDataReader.Read类似
  11.                     //while ((s = reader.ReadLine()) != null)
  12.                     //{
  13.                     //    MessageBox.Show(s);
  14.                     //}
  15.                     s = reader.ReadToEnd();
  16.                     MessageBox.Show(s);
  17.                 }
  18.             }
复制代码
StreamReader 转换需要指定什么编码

作者: 刘胜寒    时间: 2013-3-30 16:44
没有!!这个StreamReader类没有
作者: DWC_5101    时间: 2013-3-30 20:46
要指定。
最好这样做:
将 new StreamReader(stream, Encoding.UTF8)  改成 new StreamReader(stream, Encoding.Default)
这样才能保证中文等非字母的内容,能正确读取。
比如在英文操作系统上,如果不指定,读出来的汉字就是乱码,如果改用Default了,就能正确读取。在日文操作系统上,这样写,能正确读取日文,很通用。
作者: 曾玉锋    时间: 2013-3-30 21:42
对于流的读取操作,编码问题是一个头疼的问题,不过,如果知道了要读取文件的编码格式,也就不是问题了
比如说,如果你要读取的文件的编码格式是utf-8格式的,则在创建读取流的时候指定utf-8格式,指定格式有多种方法。可以通过Encoding.UTF8指定
也可以通过Encoding.GetEncoding('utf-8")指定。
例:
StreamReader reader=new StreamReader("url",Encoding.UTF8);
或者
StreamReader reader=new StreamReader("url",Encoding.GetEncoding("utf-8"));

对于Encoding.default,Encoding.default是指当前电脑的区域语言设置的编码,对于中文操作系统,默认为gb2312.
作者: 郑丹丹1990    时间: 2013-3-30 22:09
DWC_5101 发表于 2013-3-30 20:46
要指定。
最好这样做:
将 new StreamReader(stream, Encoding.UTF8)  改成 new StreamReader(stream, Enco ...

学习了。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2