2009-12-25 24 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

相關問題