如何在RichTextBox中正确打开UTF-8文件?

时间:2011-09-04 05:13:01

标签: c# richtextbox

我有一个问题。这段代码打开了带有英文文本的txt文件,但是当我尝试用西里尔文本打开txt文件时......西里尔文符号是“正方形”。有可能解决这个问题吗?

        string fileData = openFileDialog1.FileName;
        StreamReader sr = new StreamReader(fileData);
        richTextBox.Text = sr.ReadToEnd();
        sr.Close();

        SavedFile = saveFileDialog1.FileName;
        dataTextBox.SaveFile(SavedFile, RichTextBoxStreamType.PlainText);

解决方案:

        string fileData = openFileDialog1.FileName;
        StreamReader sr = new StreamReader(fileData, Encoding.Default);
        richTextBox.Text = sr.ReadToEnd();
        sr.Close();

2 个答案:

答案 0 :(得分:2)

你确定文件是UTF8,对吧?如果您编写字符串str = sr.ReadToEnd();,请在下一行放置一个断点并在Visual Studio中查看str,您看到的是西里尔文本吗?尝试在记事本中打开文件,文件 - >另存为,然后选择UTF8作为编码。

记事本能够“读取”文件的原因是它使用用户代码页,在您的情况下,它可能是Windows-1251(西里尔文)代码页。 StreamReader尝试将文件读取为UTF8。如果您愿意,可以强制StreamReader使用不同的代码页。第二个参数是您要使用的Encoding。你传递Encoding.GetEncoding(1251)西里尔文。遗憾的是,你必须知道Encoding“先验”(=之前)读取文件。

答案 1 :(得分:1)

StreamWriter,默认情况下以UTF-8编码格式读取,除非明确指定。

尝试将文本转换为Windows编码,然后尝试使用相同的代码再次阅读。