在Windows Forms中设置文本框编码

5
当我尝试从文件中获取一些文本并在文本框中显示时,如果我想要写捷克字符(例如 čšž),它们会显示为:Moj� nejv�t�� z�libou je �e�en� koresponden�n�ch semin���。
我应该在将其分配给textBox1.text之前设置加载的文本编码,还是可以更改textBox1.Text本身的编码?
我使用以下代码:
textBox1.Text = File.ReadAllText(file);
2个回答

5

尝试强制编码(如果您不知道正确的编码方式,机器默认应该是可以的):

textBox1.Text = File.ReadAllText(file,Encoding.Default);

无论如何,作为捷克人,我猜你当前的默认编码是“西欧(Windows)”(你也可以使用Encoding.GetEncoding(1252)获得它)。
这也是我的电脑上的编码方式(我有一个意大利版的Win7)。

0

来自MSDN的ReadAllText()

该方法尝试根据字节顺序标记的存在自动检测文件的编码格式。可以检测UTF-8和UTF-32(大端和小端)编码格式。

当读取可能包含导入文本的文件时,请使用ReadAllText(String,Encoding)方法重载,因为未识别的字符可能无法正确读取。

如果自动检测在您的情况下不起作用,请尝试使用其他重载来显式指定编码格式,例如:

textBox1.Text = File.ReadAllText(file, Encoding.UTF8);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接