Console.Write() - 显示扩展的 ascii 字符?
Posted
技术标签:
【中文标题】Console.Write() - 显示扩展的 ascii 字符?【英文标题】:Console.Write() - display extended ascii chars? 【发布时间】:2011-04-26 06:34:22 【问题描述】:我能够正确显示标准 ASCII 符号(最多 127 个),例如“心”、“笔记”,你知道我的意思。我还想展示可用于绘制墙壁的那些(如 U0205),但它不起作用..好吧,它起作用但看起来像“?”。有什么办法可以显示它们?谢谢。
【问题讨论】:
Unicode U+0205 是“带有双坟的拉丁文小写字母 e”所以我不确定你在说什么字符... 【参考方案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?以上是关于Console.Write() - 显示扩展的 ascii 字符?的主要内容,如果未能解决你的问题,请参考以下文章