我試圖在文本框中顯示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