2010-10-19 120 views
2

我找不到默认情况下控制台应用使用哪种字体?是否保证每个人都拥有该字体(运行此.NET应用程序时)?想要显示一些unicode字符,并且需要确定它们在该字体中。 感谢C#控制台字体

+0

AFAIK您无法更改/了解控制台的字体。它的编码由操作系统决定。 – 2010-10-19 19:00:11

回答

8

我强烈建议避免控制台,如果你想使用Unicode字符。尝试让控制台正确显示Unicode有许多问题。

控制台输出中不直接支持Unicode。最好的选择通常是set the console's code page,这将需要P/Invoke。

这就是说,GUI以更好的方式解决了所有这些问题。如果你需要Unicode输出,我会推荐一个简单的GUI。

+1

您可以对此进行投票 - 但要等到实际尝试将unicode写入控制台时 - 这是令人难以置信的问题......即使您为控制台指定了TrueType字体,代码页实际上也会混淆unicode输出。 – 2010-10-19 19:07:44

+0

@Dervin:OP正在尝试做一些不直接支持的事情。 – 2010-10-19 19:08:01

+0

我不这么认为,因为在C#中每个字符串都是unicode字符的字符串。 – Loj 2010-10-19 19:08:40

1

你可以告诉正在使用的字体由该密钥读取注册表值“0”:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont 
+1

这只是没有例外的语言环境的默认控制台字体。一些语言定义了其他值。例如,如果您安装了安装了东亚国际化文件的Windows,则会看到值为'932':'* MSゴック','* MS Gothic'。这意味着当系统代码页是932(Windows shift-JIS knock-off)时,与日文系统一样,字体将是MS哥特式,而不是'0'中列出的字体。当你用'chcp'改变代码页时,你甚至可以看到它切换字体。 – bobince 2010-10-20 01:34:57

+0

谢谢!曾几何时,文本看起来很简单... – 2010-10-20 03:07:16

+0

根据我的经验,这个注册表键似乎影响Windows控制台,但不影响.NET对象'System.Console'。 – H2ONaCl 2014-07-13 15:08:28