我正在尝试在文本框中显示ascii-art。 如果我在记事本中使用字体“Lucida Console”,9pt,常规打开一个特定的.nfo文件,它看起来像这样:
http://i48.tinypic.com/24zvvnr.png
在我的应用程序中,我将文本框的字体设置为“Lucida Console”,9 pt,常规,它看起来像这样:
http://i49.tinypic.com/2ihq8h0.png
我做错了什么? (或者 - 我应该怎么做才能让它看起来像在记事本中?)
答案 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)
您可能正在使用错误的编码读取文件。
你是如何打开文件的?