c#文本框字体问题:相同的字体在应用程序中看起来完全不同,然后在记事本中

时间:2009-12-25 01:30:37

标签: c# fonts textbox

我正在尝试在文本框中显示ascii-art。 如果我在记事本中使用字体“Lucida Console”,9pt,常规打开一个特定的.nfo文件,它看起来像这样:

http://i48.tinypic.com/24zvvnr.png

在我的应用程序中,我将文本框的字体设置为“Lucida Console”,9 pt,常规,它看起来像这样:

http://i49.tinypic.com/2ihq8h0.png

我做错了什么? (或者 - 我应该怎么做才能让它看起来像在记事本中?)

2 个答案:

答案 0 :(得分:7)

你的问题可以总结如下: ASCII不是UTF-8,UTF-8不是ASCII

StreamReader(string)构造函数初始化StreamReader以使用Encoding.UTF8,这是一个静默尝试解析无效字符的UTF-8解码器。快速浏览the Wikipedia page for .nfo files可以发现大多数.nfo文件通常以Extended ASCII (aka Code Page 437)编码。虽然ASCII的前127个字符映射到UTF-8的前127位模式,但编码相同,因此如果您使用另一个预期的字符,则会得到不正确的字符。

你可能想要:

System.Text.Encoding encoding = System.Text.Encoding.GetEncoding(437);
System.IO.StreamReader file = new System.IO.StreamReader(fileName, encoding);

答案 1 :(得分:2)

您可能正在使用错误的编码读取文件。

你是如何打开文件的?