C# 如何将特殊字符(0x80..0x9F)写入Windows控制台?

C# 如何将特殊字符(0x80..0x9F)写入Windows控制台?,c#,character-encoding,console,windows-console,C#,Character Encoding,Console,Windows Console,我想要这个代码: System.Console.Out.WriteLine ("œil"); 在我的测试程序中显示œil而不是oil 在我的系统上,Console.outpuneCoding默认设置为西欧DOS代码页设置为850,WindowsCodePage设置为1252。字符集包含特殊的OE和OE双元音,这在上可以看到,但不知何故,我怀疑该集中未找到的字符会被丢弃/替换 诸如–、ç等字符将在控制台上正确显示,但扩展0x80中的任何字符。。。0x9F范围不适用 如何在控制台上正确显示它们?如

我想要这个代码:

System.Console.Out.WriteLine ("œil");
在我的测试程序中显示œil而不是oil

在我的系统上,Console.outpuneCoding默认设置为西欧DOS代码页设置为850,WindowsCodePage设置为1252。字符集包含特殊的OE和OE双元音,这在上可以看到,但不知何故,我怀疑该集中未找到的字符会被丢弃/替换

诸如–、ç等字符将在控制台上正确显示,但扩展0x80中的任何字符。。。0x9F范围不适用

如何在控制台上正确显示它们?

如下所示:

Console.OutputEncoding = System.Text.Encoding.UTF8;
System.Console.Out.WriteLine("œil");
不要忘记为控制台窗口选择支持所需字符的字体。这是使用ConsoleAs字体的“我的控制台”窗口的屏幕截图


您可以像这样在控制台上设置输出编码

Console.OutputEncoding = Encoding.UTF8;

事实上,这是行不通的。在我的Windows 7 x64上,执行代码时会生成一个十字,后面跟一个字符。您的控制台窗口中有什么字体?请注意,Lucida控制台有很多错误字符。使用其他工具,例如ConsoleAs。请参阅如何使用interop在C中更改控制台的字体。秘密确实在字体中。。。使用Console作为字体可以使UTF8输出正确显示,就像David在屏幕截图中发布的一样。非常感谢。在控制台上获得代码页1252非常不寻常,它几乎总是437,IBM PC OEM代码页。它没有\u0153的标志符号。您可以更改OutpuneCoding,但还必须更改控制台字体。顺便说一句,西欧DOS是代码页850,而不是1252。它包含ISO 8859-1中的所有字符,即windows 1252的0xA0-0xFF,这可能会造成一些混淆。NET函数本身使用Unicode,但在使用非truetype字体写入控制台时,有时会翻译得很糟糕;System.Text.SBCSCodePageEncoding同时返回一个代码页和一个Windows代码页,我混淆了这两个。抱歉。我想我最后在一个陈旧的页面上发表了评论:是的,我自己做了很多+1