我正试图在文本框中显示ascii-art.如果我使用字体"Lucida Console",9pt,常规,在记事本中打开一个特定的.nfo文件,它看起来像这样:
http://i48.tinypic.com/24zvvnr.png
在我的应用程序中,我将文本框的字体设置为"Lucida Console",9 pt,常规,它看起来像这样:
http://i49.tinypic.com/2ihq8h0.png
我究竟做错了什么 ?(或者 - 我应该怎么做才能让它看起来像在记事本中?)
您的问题可以这样总结: ASCII不是UTF-8,UTF-8不是ASCII.
该StreamReader(string)
构造函数初始化StreamReader
使用Encoding.UTF8
,这是一个UTF-8解码器默默地尝试解析无效字符.快速浏览.nfo文件的维基百科页面可以发现大多数.nfo文件通常用扩展ASCII编码(也就是代码页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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1477 次 |
最近记录: |