我试图在文本框中显示ascii艺术。 如果我在记事本中打开一个特定的.nfo文件与字体“龙力控制台”,宋体,常规,它看起来像这样:c#textbox字体问题:相同的字体看起来完全不同,然后在记事本中
http://i48.tinypic.com/24zvvnr.png
在我的应用我设置文本框“龙力的字体控制台”,9点,定期,它看起来像这样:
http://i49.tinypic.com/2ihq8h0.png
我在做什么错? (或 - 我应该怎么做才能让它看起来像记事本中的那样?)
我试图在文本框中显示ascii艺术。 如果我在记事本中打开一个特定的.nfo文件与字体“龙力控制台”,宋体,常规,它看起来像这样:c#textbox字体问题:相同的字体看起来完全不同,然后在记事本中
http://i48.tinypic.com/24zvvnr.png
在我的应用我设置文本框“龙力的字体控制台”,9点,定期,它看起来像这样:
http://i49.tinypic.com/2ihq8h0.png
我在做什么错? (或 - 我应该怎么做才能让它看起来像记事本中的那样?)
您的问题可以归结如下: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);
先生,你是英雄! 工程就像一个魅力,现在我明白使用正确编码的重要性:) 非常感谢! – Led 2009-12-25 03:03:29
没问题,很高兴我能帮到你。 – 2009-12-25 03:29:19
您可能正在用错误的编码阅读文件。
你是如何打开文件的?
我不是黑客,我只是想能够显示ASCII艺术在我的应用程序。 我已经使用了.nfo示例,因为它是使用扩展字符集的最容易找到的文件。 – Led 2009-12-25 01:37:12
这似乎表明你至少在下载软件的问题。也许最好在这里发布时使用一些不那么有罪的东西。 – spender 2009-12-25 01:40:13
如果您查看nfo文件,它仍然指定adlib卡。 这实际上是一个可公开访问的在线古董nfo收藏(为了历史的缘故收集nfo的人)的nfo,可能大约15岁;) – Led 2009-12-25 01:48:55