2009-12-25 49 views
0

我试图在文本框中显示ascii艺术。 如果我在记事本中打开一个特定的.nfo文件与字体“龙力控制台”,宋体,常规,它看起来像这样:c#textbox字体问题:相同的字体看起来完全不同,然后在记事本中

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

在我的应用我设置文本框“龙力的字体控制台”,9点,定期,它看起来像这样:

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

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

+0

我不是黑客,我只是想能够显示ASCII艺术在我的应用程序。 我已经使用了.nfo示例,因为它是使用扩展字符集的最容易找到的文件。 – Led 2009-12-25 01:37:12

+1

这似乎表明你至少在下载软件的问题。也许最好在这里发布时使用一些不那么有罪的东西。 – spender 2009-12-25 01:40:13

+1

如果您查看nfo文件,它仍然指定adlib卡。 这实际上是一个可公开访问的在线古董nfo收藏(为了历史的缘故收集nfo的人)的nfo,可能大约15岁;) – Led 2009-12-25 01:48:55

回答

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); 
+0

先生,你是英雄! 工程就像一个魅力,现在我明白使用正确编码的重要性:) 非常感谢! – Led 2009-12-25 03:03:29

+0

没问题,很高兴我能帮到你。 – 2009-12-25 03:29:19

2

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

你是如何打开文件的?

+0

using System.IO.StreamReader file = new System.IO.StreamReader(inFileName); 然后只是ReadLine直到结束。 我应该在某处指定编码吗? – Led 2009-12-25 01:49:58

+0

在VS中打开文件,单击文件,高级保存选项,然后检查它实际是什么编码。 – SLaks 2009-12-25 01:59:22

+0

然后我看到了什么编码这个文件是在,但有一个通用的编码,我可以用于所有ascii艺术文件..? – Led 2009-12-25 02:17:23

相关问题