Console.Write() - 显示扩展的ascii字符?

时间:2010-10-16 07:51:49

标签: c# console extended-ascii

我能够正确显示标准的ASCII符号(最多127个),如“heart”,“note”,你知道我的意思。我还想展示一些我可以用来绘制墙壁的东西(比如U0205),但是它不起作用。但是,它有效,但它看起来像“?”。我怎么能显示它们?谢谢。

2 个答案:

答案 0 :(得分:16)

控制台模式应用仅限于8位代码页编码。许多机器上的默认设置是IBM437,这是与旧的IBM PC字符集匹配的代码页。您可以通过分配OutputEncoding属性来更改代码页:

        Console.OutputEncoding = Encoding.UTF8;

但现在您通常遇到字体问题。控制台默认为终端字体,这是一种旧设备字体,在正确的位置具有字形以生成IBM PC字符集。没有很多字体可以生成与Unicode代码点匹配的正确字形。 Consolas是关于它的,可以在Vista和Win7上使用。

但是那不是你要问的,我想,我猜你实际上是在问老盒子的人物。这可以在没有任何修改控制台设置的情况下工作,您只需使用正确的Unicode字符。这是一个应该存在复制粘贴的例子:

class Program {
    static void Main(string[] args) {
        Console.WriteLine("╒════════╕");
        Console.WriteLine("│ Hello  │");
        Console.WriteLine("│ world  │");
        Console.WriteLine("╘════════╛");
        Console.ReadLine();
    }
}

要查找这些字符,请使用Windows charmap.exe小程序。单击“高级视图”复选框并在“搜索”文本框中键入“框”,网格将填充框图字符。第一个可以正确转换为控制台的是'\ u250c'。

答案 1 :(得分:1)

问题似乎与控制台应用程序有关,而不是与您的程序有关。 Windows(cmd.exe)中的标准控制台似乎不能正确支持Unicode - 例如,尝试复制下面的字符串并直接粘贴到cmd.exe窗口中:

  

FußballÖü

PowerShell似乎也遇到了同样的问题。

您的问题的一个可能解决方案是创建一个专用窗口/表单作为“输出控制台”,而不是使用执行应用程序的实际控制台。

相关问题