代码之家  ›  专栏  ›  技术社区  ›  Led

C文本框字体问题:同一字体在应用程序和记事本中看起来完全不同

  •  0
  • Led  · 技术社区  · 15 年前

    我试图在文本框中显示ASCII艺术。 如果我用字体“lucida console”,9pt,regular在记事本中打开一个特定的.nfo文件,它看起来是这样的:

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

    在我的应用程序中,我将文本框的字体设置为“Lucida控制台”,9 pt,常规,如下所示:

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

    我做错什么了? (或者-我该怎么做才能让它看起来像记事本?)

    2 回复  |  直到 15 年前
        1
  •  7
  •   Daniel Pryden    15 年前

    你的问题可以这样概括: 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);
    
        2
  •  2
  •   SLaks    15 年前

    您可能在读取文件时使用了错误的编码。

    你是如何打开文件的?