我有一个问题。这段代码打开了带有英文文本的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();
答案 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编码,然后尝试使用相同的代码再次阅读。