来自代码页437的旧DOS字符的错误显示

问题描述:

我正在制作文本模式游戏,显然我在使用C#显示一些关键字符时遇到了一些问题。他们来自代码页CP437,但即使我设置代码页437:来自代码页437的旧DOS字符的错误显示

Console.OutputEncoding = Encoding.GetEncoding(437); 

我看到,当我尝试打印我需要字符的唯一的事情是“????” (一些问号),就好像Visual Studio的控制台无法打印它们一样。我需要的这些字符是0xB0,0xB1,0xB2,0xDB。

顺便说一下,我在这个编码中打印了全部256个字符,我看到有更多的字符显示为“?”。

TIA。

+1

直到版本4的.NET控制台在显示特殊字符时出现问题。你能升级到4.5吗? – 2012-07-19 16:40:24

+1

您是否尝试将控制台中的字体更改为Lucida?字体支持的字符数量不同。 – 2012-07-19 17:07:41

控制台的默认代码页已经是437.最可能的故障模式实际上是试图写入0xb0等,而不是这些字符的Unicode版本。这确实会造成很多问号,U + 0080到U + 00ff范围内的许多代码点未分配或没有第437页中的相应字符。

代码页437中的0xb0是'\ u2591 '在你的C#代码中。检查代码this page