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

Led*_*Led 0 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

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

Dan*_*den 7

您的问题可以这样总结: ASCII不是UTF-8,UTF-8不是ASCII.

StreamReader(string)构造函数初始化StreamReader使用Encoding.UTF8,这是一个UTF-8解码器默默地尝试解析无效字符.快速浏览.nfo文件的维基百科页面可以发现大多数.nfo文件通常用扩展ASCII编码(也就是代码页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);
Run Code Online (Sandbox Code Playgroud)