黑马程序员技术交流社区

标题: 为什么读到的是乱码呢 [打印本页]

作者: 782385854    时间: 2013-11-2 11:30
标题: 为什么读到的是乱码呢
本帖最后由 782385854 于 2013-11-2 13:27 编辑

[img][/img]
  1.         private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
  2.         {
  3.             OpenFileDialog  ofd = new OpenFileDialog();//打开一个对话框
  4.             ofd.Title = "打开文件";  //设置对话框的标题
  5.             ofd.Filter = "文本文件|*.txt|所有文件|*。*";
  6.             if (ofd.ShowDialog() == DialogResult.OK)
  7.             {
  8.                 //用户点击了打开
  9.              //textBox1.Text =      File.ReadAllLines(ofd.FileName);
  10.                 //第一步声明一个文件流
  11.                 FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, FileShare.None);
  12.                 //创建读写器
  13.                 StreamReader sr = new StreamReader(fs);
  14.                   //读取一行          sr.ReadLine();
  15.                 //读取到最后
  16.                 textBox1.Text = sr.ReadToEnd();
  17.                 //关闭读取器
  18.                 fs.Close();
  19.                 sr.Close();
  20.             }
  21.         }
复制代码

V~4CVG4NL1}WY1%3UQGQ2GK.jpg (66.23 KB, 下载次数: 37)

V~4CVG4NL1}WY1%3UQGQ2GK.jpg

作者: dashanren    时间: 2013-11-2 13:01
注意 StreamReader类的解释是 使其以一种特定的编码从字节流中读取字符。你没有选定编码方式应为new StreamReader(fs,Encoding.Default ); 还有“所有文件|*。*";”句号改为点号。
作者: 蒋东东    时间: 2013-11-2 13:16
StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("gb2312"));初始化该流需要指定字符编码,中文系统下默认是gb2312。也可以用Encoding.Default,这样你里面的中文就不会乱码了。
作者: 782385854    时间: 2013-11-2 13:27
谢谢啦,改好了
作者: 张小康    时间: 2013-11-2 16:20
可以在方法中定义字符的编码,
FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read, Encoding.Default);




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