我能够正确显示标准的ASCII符号(最多127),例如“心”,注意“您知道我的意思。我还想显示可以用于绘制墙壁(例如U0205)但行不通的墙壁。我如何显示它们?谢谢你。

有帮助吗?

解决方案

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

        Console.OutputEncoding = Encoding.UTF8;

但是现在您通常对字体有问题。控制台默认为终端字体,端子字体是一种旧设备字体,在正确的位置具有字形以生成IBM PC字符集。没有很多字体可以产生与Unicode Codepoint匹配的合适字形。 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 applet。单击“搜索”文本框中的“高级视图”复选框,然后键入“框”,网格将填充框绘图字符。第一个将正确转换为控制台的可用速度是“ u250c”。

其他提示

问题似乎是在控制台应用程序上,而不是与您的程序有关。 Windows(CMD.EXE)中的标准控制台似乎不适当支持Unicode - 例如,尝试将下面的字符串直接复制到cmd.exe窗口中:

fußballöü

Powershell似乎也遭受了同样的问题。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top