是否可以在Windows控制台中输出和显示U + 2717(BALLOT X)?

时间:2014-12-17 05:51:49

标签: c# unicode console-application

我试图从C#程序向Windows控制台窗口输出unicode字符U + 2717(BALLOT X),但没有成功。没有字体,输出编码或其他任何东西的组合似乎工作。我默认使用的字体(Consolas)可以正确显示此字符,因为它是我在Visual Studio中使用的字体,并且Visual Studio正确显示该字符。附近的角色U + 2713(CHECK MARK)显示正确,所以我认为这个角色有特定的东西阻止它正确显示。它可能是什么?

示例(非工作)代码:

System.Console.WriteLine("✗");

也不起作用(以同样的方式失败,即输出"?"):

System.Console.WriteLine("\u2717");

我尝试过设置各种输出编码:

System.Console.OutputEncoding = System.Text.Encoding.UTF32;
  • UTF32抛出异常(参数不正确。)。
  • UTF8输出?在一个小盒子里(Consolas字体)。
  • UTF16输出?在一个小盒子里(Consolas字体)。
  • 如果我没有设置输出编码,我会正常吗?字符。默认情况下,OutputEncoding是SBCSCodePageEncoding。

1 个答案:

答案 0 :(得分:0)

在我的Win7机器上,Consolas不支持

。。如果我使用代码here列出支持fonts的字体,我会得到Meiryo,Meiryo UI,MS Gothic,MS Mincho,MS PGothic,MS PMincho,MS UI Gothic和Segoe UI Symbol。我相信正在发生的事情是Visual Studio正在回归MS Mincho,因为Consolas缺少必要的字形。 Word肯定会这样做 - 如果我在Word中键入I,我就无法将字体更改为Consolas。

解决方法:

  1. Find a fixed-width font支持此角色。例如DejaVu Sans Mono does

  2. 安装字体。

  3. 使用以下说明将字体添加到可能的控制台字体列表中:Enable More Fonts for the Windows Command Prompt

  4. 在控制台窗口中选择字体。