【问题标题】:Wrong display of old DOS characters from code page 437代码页 437 中旧 DOS 字符的错误显示
【发布时间】:2012-07-19 16:33:53
【问题描述】:

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

Console.OutputEncoding = Encoding.GetEncoding(437);

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

顺便说一句,我用这种编码打印了所有 256 个字符,我看到显示为“?”的字符要多得多。

TIA。

【问题讨论】:

  • .NET 控制台,直到版本 4,在显示特殊字符时出现问题。可以升级到 4.5 吗?
  • 您是否尝试将控制台中的字体更改为 Lucida?字体支持的字符数不同。

标签: c# visual-studio character-encoding console-application codepages


【解决方案1】:

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

代码页 437 中的 0xb0 在您的 C# 代码中是“\u2591”。检查this page 的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多