【发布时间】:2011-10-28 13:15:15
【问题描述】:
我想要这个代码:
System.Console.Out.WriteLine ("œil");
显示œil 而不是oil,就像在我的测试程序中那样。
Console.OutputEncoding 在我的系统上默认设置为Western European (DOS)(CodePage 设置为 850,WindowsCodePage 设置为 1252)。该字符集包含特殊的 OE 和 oe 双音(可以在 Wikipedia article on Windows-1252 上看到),但不知何故,我怀疑在 ISO-8859-1 集中找不到的字符会被丢弃/替换。
â、ç 等字符可以正确显示在控制台上,但扩展的 0x80 ... 0x9F 范围内的任何字符都不会。
如何在控制台上正确显示它们?
【问题讨论】:
-
在控制台上获得代码页 1252 非常不寻常,它几乎总是 437,IBM PC OEM 代码页。其中没有 \u0153 的字形。您可以更改 OutputEncoding,但您还必须更改控制台字体。
-
顺便说一下,“西欧 (DOS)”是代码页 850,而不是 1252。它包含 ISO 8859-1 中的所有字符(即 windows 1252 的 0xA0-0xFF),这可能会引起一些混乱。 .NET 函数本身使用 Unicode,但在写入控制台并选择非 truetype 字体时会被翻译(有时效果不佳)。
-
我已经澄清了代码页问题;
System.Text.SBCSCodePageEncoding同时返回一个代码页和一个 Windows 代码页,我把两者都搞混了。对不起。
标签: c# character-encoding console windows-console