【问题标题】:Console.Write() - display extended ascii chars?Console.Write() - 显示扩展的 ascii 字符?
【发布时间】:2011-04-26 06:34:22
【问题描述】:

我能够正确显示标准 ASCII 符号(最多 127 个),例如“心”、“笔记”,你知道我的意思。我还想展示可用于绘制墙壁的那些(如 U0205),但它不起作用..好吧,它起作用但看起来像“?”。有什么办法可以显示它们?谢谢。

【问题讨论】:

  • Unicode U+0205 是“带有双坟的拉丁文小写字母 e”所以我不确定你在说什么字符...

标签: c# console extended-ascii


【解决方案1】:

控制台模式应用仅限于 8 位代码页编码。许多机器上的默认值是 IBM437,与旧的 IBM PC 字符集匹配的代码页。您可以通过分配 OutputEncoding 属性来更改代码页:

        Console.OutputEncoding = Encoding.UTF8;

但是现在您通常会遇到字体问题。控制台默认使用终端字体,这是一种旧设备字体,在正确的位置有字形以生成 IBM PC 字符集。没有很多可用的字体可以生成与 Unicode 代码点匹配的正确字形。 Consolas 就是这样,在 Vista 和 Win7 上可用。

但这不是你要问的,我想,我猜你实际上是在问旧的画框字符。这无需对控制台设置进行任何修改,您只需使用正确的 Unicode 字符即可。这是一个应该可以在复制粘贴中幸存下来的示例:

class Program {
    static void Main(string[] args) {
        Console.WriteLine("╒════════╕");
        Console.WriteLine("│ Hello  │");
        Console.WriteLine("│ world  │");
        Console.WriteLine("╘════════╛");
        Console.ReadLine();
    }
}

要查找这些字符,请使用 Windows charmap.exe 小程序。单击“高级视图”复选框并在“搜索”文本框中键入“框”,网格将填充方框图字符。第一个可以正确转换到控制台的可用的是 '\u250c'。

【讨论】:

    【解决方案2】:

    问题似乎出在控制台应用程序上,而不是您的程序上。 Windows 中的标准控制台 (cmd.exe) 似乎无法正确支持 Unicode - 例如,尝试复制下面的字符串并直接粘贴到 cmd.exe 窗口中:

    Fußball Öü

    PowerShell 似乎也遇到了同样的问题。

    解决您的问题的一种可能方法是创建一个专用窗口/表单用作“输出控制台”,而不是使用执行应用程序的实际控制台。

    【讨论】:

    • 这些字符在控制台窗口和 Server 2008 下的 PowerShell 中使用默认光栅字体显示得很好。您运行的是哪个版本的 Windows?
    猜你喜欢
    • 2022-01-14
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多