这太琐碎了,听起来很傻,但请耐心等待。
以前我可以通过以下方式绘制ASCII艺术笑脸[{3}}:
Console.Write((char)1);
当我在Windows XP / 7上执行此操作时,控制台默认情况下无法呈现该字符。我通过使用这种特殊编码解决了这个编码问题:
Console.OutputEncoding = System.Text.Encoding.GetEncoding(1252);
现在我在Windows 10中尝试这个,我得到这个奇怪的问号字符,这让人联想到原始的编码问题:
Windows 10控制台中是否有更改导致此问题?我该如何解决?
答案 0 :(得分:2)
请注意,(char)1
只能 使用OEM代码页437.这在DOS应用程序中运行良好,但在Windows上这种方法稍微复杂一些,特别是因为U + 0001执行不代表笑脸。 U + 263A。所以正确的方法实际上是:
Console.WriteLine((char)0x263A);
您可能必须将输出编码显式设置为Unicode或UTF-8才能显示,否则角色会沿途经过一些字符集翻译,具体取决于您的控制台窗口设置:
Console.OutputEncoding = Encoding.Unicode;
答案 1 :(得分:1)
这适用于Windows 10:
public static void Main()
{
Console.OutputEncoding = System.Text.Encoding.Unicode;
Console.WriteLine("☺");
}
答案 2 :(得分:1)