c#文本框字体问题:同一字体在应用程序中看起来和在记事本中完全不同

c#文本框字体问题:同一字体在应用程序中看起来和在记事本中完全不同,c#,fonts,textbox,C#,Fonts,Textbox,我试图在文本框中显示ascii艺术。 如果我在记事本中打开一个特定的.nfo文件,字体为“Lucida Console”,9pt,常规,如下所示: 在我的应用程序中,我将文本框的字体设置为“Lucida Console”,9磅,常规,如下所示: 我做错了什么? (或者-我应该怎么做才能使它在记事本中看起来像?您可能正在读取编码错误的文件 如何打开文件?您的问题可以这样总结:ASCII不是UTF-8,UTF-8不是ASCII StreamReader(string)构造函数初始化StreamR

我试图在文本框中显示ascii艺术。 如果我在记事本中打开一个特定的.nfo文件,字体为“Lucida Console”,9pt,常规,如下所示:

在我的应用程序中,我将文本框的字体设置为“Lucida Console”,9磅,常规,如下所示:

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

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


如何打开文件?

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

StreamReader(string)
构造函数初始化
StreamReader
以使用
Encoding.UTF8
,这是一个UTF-8解码器,它会以静默方式尝试解析无效字符。快速浏览一下就会发现,大多数.nfo文件通常都是以。虽然ASCII的前127个字符映射到UTF-8的前127位模式,但编码是不相同的,因此如果在需要另一个字符的地方使用其中一个字符,则会得到不正确的字符

您可能想要:

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

我不是一个黑客,我只是想能够在我的应用程序中显示ascii艺术。我使用了一个.nfo示例,因为它是最容易找到的使用扩展字符集的文件。它显然表明您至少正在下载软件。也许在这里发帖时使用一些不太令人感到内疚的东西会更明智。如果你查看nfo文件,它仍然指定了adlib卡。这实际上是一个公开的在线古董nfo收藏中的nfo(人们为了历史而收集nfo),大概有15年了;)您好,您是否将此字体作为资源“嵌入”到您的应用程序中?您已设置或未设置哪些可能影响字体呈现的GDI+设置?使用System.IO.StreamReader file=new System.IO.StreamReader(inFileName);然后读到最后。我应该在某个地方指定编码吗?在VS中打开该文件,单击“文件”、“高级保存选项”,然后检查它实际上是什么编码。然后我看到该文件是什么编码,但是否有一种通用编码可用于所有ascii艺术文件..?这取决于文件。我不知道你的档案来自哪里,先生,你是个英雄!工作起来很有魅力,现在我明白了使用正确编码的重要性:)非常感谢!没问题,很高兴我能帮忙。