A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© guobin_lu 中级黑马   /  2013-3-30 16:36  /  1633 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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 转换需要指定什么编码

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

4 个回复

倒序浏览
没有!!这个StreamReader类没有
回复 使用道具 举报
要指定。
最好这样做:
将 new StreamReader(stream, Encoding.UTF8)  改成 new StreamReader(stream, Encoding.Default)
这样才能保证中文等非字母的内容,能正确读取。
比如在英文操作系统上,如果不指定,读出来的汉字就是乱码,如果改用Default了,就能正确读取。在日文操作系统上,这样写,能正确读取日文,很通用。

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
对于流的读取操作,编码问题是一个头疼的问题,不过,如果知道了要读取文件的编码格式,也就不是问题了
比如说,如果你要读取的文件的编码格式是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.

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
DWC_5101 发表于 2013-3-30 20:46
要指定。
最好这样做:
将 new StreamReader(stream, Encoding.UTF8)  改成 new StreamReader(stream, Enco ...

学习了。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马