我用C#做了一个记事本,怎么打开时乱码啊.哪里出问题了?(有代码)

来源:百度知道 编辑:UC知道 时间:2024/05/26 14:53:09
private void 打开OToolStripMenuItem_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.InitialDirectory = "c:\\";
dlg.Filter = "txt files(*.txt)|*.txt|All files(*.*)|*.*";
dlg.FilterIndex = 0;
if (dlg.ShowDialog() == DialogResult.OK)
{
string s = "";
StreamReader sr = new StreamReader(dlg.FileName);
while (!sr.EndOfStream)
{
s += sr.ReadLine() + System.Environment.NewLine;
}
sr.Close();
this.richTextBox1.Text = s;
}
}

怎么调试的时候打开的东西是乱码?同学说是啥子二进制计算问题,应该怎样改?请大虾们留下代码啊..
要怎样改啊.能不能留点代码.

编码问题,一般用AssicII

不是改好给你了啊

很显然 是没有编码

就是这句
StreamReader sr = new StreamReader(dlg.FileName);

更改为:,StreamReader sr = new StreamReader(dlg.FileName,System.Text.Encoding.Default
);

System.Text.Encoding.Default 表示使用当前系统ANSI方式编码

你确定你的打开编码格式对么?一般默认会存储为GB2312,而.net默认会以utf8打开,所以自然会出问题

回答补充:
你的SteamReader有多个构造函数,第二个可以传一个Encoding对象,new StreamReader(dlg.FileName,Encoding.UTF8);

编码问题,你同学真会忽悠你,唉不会就不会干嘛乱说拟。