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

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

控制台模式应用程序仅限于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’。

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

FußballÖü

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

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