【问题标题】:How to display non-printable Ascii characters?如何显示不可打印的 Ascii 字符?
【发布时间】:2016-08-18 03:12:48
【问题描述】:

我遇到了这个将 ascii 输出到控制台的简单代码:

Console.Write((char)1); //Output ☺ 

问题是,它仅在我将控制台的字体更改为 RasterFonts 时才有效,而且很难看。我的意思是,看看那些旧的基于文本的游戏,他们是如何画出这样的 ascii 艺术的?

The Amazing Adventures of ANSI Dude, Snipes

我怎样才能在那个控制台上画出漂亮的 Ascii?

【问题讨论】:

  • 如果你可以使用 Unicode 来做这件事会容易得多... "\u263a" 会产生你正在寻找的面孔,而表格绘图字符unicode-table.com/en/blocks/box-drawing 会做剩下的事情。
  • 嗯,速度很快,非常感谢,按预期工作! :)
  • 同意@AlexeiLevenkov,如果你想要'☺',只需使用'☺'(或'\u263a')。如果您使用 '\u0001\',您将依赖历史上方便的从 '\u263a' 和 '\u0001\' 到 CP437 代码点 1 的多重映射。

标签: c# console ascii


【解决方案1】:

除非出于某种原因您被限制使用ASCII characters,否则您应该使用正确的 Unicode 字符。它将避免将控制字符 (0-31) 映射到可打印字符的潜在冲突,并让您直接使用 .Net String 类型使用线条和边框,而无需经过编码(因为线条和边框是“扩展 ASCII”的一部分,而不是与常规 7 位 ASCII 码 1-127 不同,直接映射到 Unicode 字符。

Unicode "\u263a" 会产生您正在寻找的面孔。对于边框和线条绘制使用来自 Unicode box drawing range 的字符,更多字符请参见整体表 http://unicode.org/charts/

【讨论】:

  • 感谢您的详细回答,尽管某些 Unicode 字符只显示“?”...我想知道是否有办法获得那些好看的字符!就像我想用 Unicode 做一个国际象棋游戏一样,但它们不起作用!
  • @SirMaxwell 并非每种字体都支持所有字符。 “Segoe UI”(假设您使用 Windows)通常支持大多数范围。
  • 哦,有没有办法在控制台中使用该字体,而无需编写很长的低级代码来实现它?
  • @SirMaxwell 你不能...我应该提到 Segoe 不是等宽字体 - 你可以尝试更改默认字体 (superuser.com/questions/965086/…) 或找到不同的字体(一些提示 - @987654325 @)...但是,如果您希望在控制台应用程序中使用不太常见的字符,您最好切换到 GUI 应用程序并选择您喜欢的任何字体(如果您愿意,您仍然可以模拟类似控制台的外观)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-25
  • 1970-01-01
  • 2016-02-29
相关资源
最近更新 更多