我能够正确显示标准的ASCII符号(最多127个),如“heart”,“note”,你知道我的意思。我还想展示一些我可以用来绘制墙壁的东西(比如U0205),但是它不起作用。但是,它有效,但它看起来像“?”。我怎么能显示它们?谢谢。
答案 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似乎也遇到了同样的问题。
您的问题的一个可能解决方案是创建一个专用窗口/表单作为“输出控制台”,而不是使用执行应用程序的实际控制台。