C#控制台字体

C#控制台字体,c#,unicode,fonts,console,C#,Unicode,Fonts,Console,我无法确定console应用程序默认使用哪种字体?是否保证每个人都有这种字体(运行此.NET应用程序时)?要显示一些unicode字符,需要确保它们存在于该字体中。 谢谢您可以通过从该项读取注册表值“0”来判断正在使用的字体: HKLM\Software\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont 如果要使用Unicode字符,我强烈建议您避免使用控制台。试图让控制台正确显示Unicode有很多问题 控制台输出中不直接支持U

我无法确定console应用程序默认使用哪种字体?是否保证每个人都有这种字体(运行此.NET应用程序时)?要显示一些unicode字符,需要确保它们存在于该字体中。
谢谢

您可以通过从该项读取注册表值“0”来判断正在使用的字体:

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

如果要使用Unicode字符,我强烈建议您避免使用控制台。试图让控制台正确显示Unicode有很多问题

控制台输出中不直接支持Unicode。最好的选择通常是to,这将需要P/Invoke


也就是说,GUI以更好的方式解决了所有这些问题。如果您需要Unicode输出,我建议您使用一个简单的GUI。

AFAIK您无法更改/了解控制台的字体。它的编码是由操作系统决定的。你可以投票否决这一点——但等到你真正尝试将unicode写入控制台时——这是一个令人难以置信的问题。。。即使您为控制台指定了TrueType字体,实际上代码页也会弄乱unicode输出。@Dervin:OP正在尝试执行一些不受直接支持的操作。我不这么认为,因为在C中,每个字符串都是unicode字符的字符串。@Mojmi:True。C#中的每个字符串都使用Unicode字符。但是,控制台使用的本机API()早于C#,不直接支持unicode输出。@Mojmi:这取决于字符以及是否在当前选定的代码页中处理。一次只有256个字符表示“工作正常”。阅读我在问题中发布的链接,它将解释这个问题。这只是没有例外的地区的默认控制台字体。有些语言定义其他值。例如,如果安装了带有东亚国际化文件的Windows安装,您将看到值
932
*MS ゴシック
*MS哥特式
。这意味着,当系统代码页为932(Windows shift JIS仿制品)时,如在日本系统上,字体将为MS哥特式,而不是
0
中列出的字体。使用
chcp
更改代码页时,您甚至可以看到它切换字体。根据我的经验,此注册表项似乎会影响Windows控制台,但不会影响.NET对象
System.console