RichTextBox打开txt文本文件,有的文件打开乱码,有没有办法用StreamReader以Encoding.Default读取txt文件,然后用

ooolinux 2017-09-21 07:13:57
RichTextBox打开txt文本文件,有的文件打开乱码,有没有办法用StreamReader以Encoding.Default读取txt文件,然后用StreamWriter以Encoding.UTF8保存回去,然后再以Encoding.UTF8打开文件,就不会乱码了?

这种思路可行吗?代码应该怎么写呢?

我的上一个帖子:
RichTextBox用LoadFile打开txt文本文件,有的文件打开乱码怎么解决?
http://bbs.csdn.net/topics/392217407
...全文
216 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ooolinux 2019-10-04
  • 打赏
  • 举报
回复
偶然看到自己的旧帖,有了一个想法,设置两个按钮(或者菜单),分别用两种编码来打开TXT文件,如果一种打开是乱码,就用另一种再打开,用人工判断来代替自动识别。
ooolinux 2017-09-25
  • 打赏
  • 举报
回复
引用 3 楼 qq_25095899 的回复:
你打开你那个txt,选择另存为,看默认格式是不是 ANSI ? 如果是的话,试一下改为utf-8
我有一些txt文件,有ANSI的,也有UTF8的,有的有BOM有的没有,我用C#写个MDI应用程序打开这些txt文件,有的正常有的乱码,我就是想怎么打开才不会乱码,txt文件事先不做编码变换。
ooolinux 2017-09-25
  • 打赏
  • 举报
回复
引用 1 楼 u012182454 的回复:
File.WriteAllText(@"c:\temp\test\a.txt", str1, Encoding.ASCII); File.WriteAllText(@"d:\a.txt", text, Encoding.UTF8); string s = File.ReadAllText(@"d:\a.txt", Encoding.UTF8); StreamWriter sW2 = new StreamWriter(@"c:\temp\a.txt", true, Encoding.UTF8); FileStream fS = new FileStream(@"C:\temp\a.txt", FileMode.CreateNew, FileAccess.Write, FileShare.Read); StreamWriter sW4 = new StreamWriter(fS, Encoding.UTF8);
我用
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                frmEdit frm = new frmEdit();
                frm.Text = openFileDialog1.FileName;

                string fileContent = File.ReadAllText(openFileDialog1.FileName, Encoding.Default);
                File.WriteAllText(openFileDialog1.FileName, fileContent, Encoding.UTF8);
                frm.richTextBox1.Text = File.ReadAllText(openFileDialog1.FileName, Encoding.UTF8);

                frm.MdiParent = this;
                frm.Show();
            }
试了下,原来乱码的还会乱码,而且可能会破坏原始文件。 这个思路应该不可行, Encoding.Default在中文Windows中根据设置一般就是Encoding.GetEncoding("gb2312"),原来没有理解。
大然然 2017-09-25
  • 打赏
  • 举报
回复
你打开你那个txt,选择另存为,看默认格式是不是 ANSI ? 如果是的话,试一下改为utf-8
needfreedoms 2017-09-23
  • 打赏
  • 举报
回复
File.WriteAllText(@"c:\temp\test\a.txt", str1, Encoding.ASCII); File.WriteAllText(@"d:\a.txt", text, Encoding.UTF8); string s = File.ReadAllText(@"d:\a.txt", Encoding.UTF8); StreamWriter sW2 = new StreamWriter(@"c:\temp\a.txt", true, Encoding.UTF8); FileStream fS = new FileStream(@"C:\temp\a.txt", FileMode.CreateNew, FileAccess.Write, FileShare.Read); StreamWriter sW4 = new StreamWriter(fS, Encoding.UTF8);

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧