7

如何将扩展 ASCII 字符打印到控制台。例如,如果我使用以下

puts 57.chr

它将在控制台打印“9”。如果我要使用

puts 219.chr

它只会显示一个“?”。它对从 128 到 254 的所有扩展 ASCII 代码执行此操作。有没有办法显示正确的字符而不是“?”。

4

4 回答 4

11

我正在尝试使用绘图字符在我的控制台程序中创建图形。

现在你应该使用 UTF-8。

这是一个使用Box Drawing Unicode 块中的字符的示例:

puts "╔═══════╗\n║ Hello ║\n╚═══════╝"

输出:

╔═══════╗
║ Hello ║
╚═══════╝

因此,例如,如果我要使用 Unicode 字符 U+2588(完整块),我将如何在 Ruby 中将其打印到控制台。

您可以使用:

puts "\u2588"

或者:

puts 0x2588.chr('UTF-8')

或者简单地说:

puts '█'
于 2015-02-24T13:58:38.577 回答
4

您可能需要指定编码,例如:

219.chr(Encoding::UTF_8)
于 2015-02-24T12:52:06.230 回答
3

您需要指定字符串的编码,然后将其转换为UTF-8. 例如,如果我想使用Windows-1251编码:

219.chr.force_encoding('windows-1251').encode('utf-8')
# => "Ы"

同样对于ISO_8859_1

219.chr.force_encoding("iso-8859-1").encode('utf-8')
# => "Û" 
于 2015-02-24T12:55:55.290 回答
0

您可以使用以下方法Integer#chr([encoding])

219.chr(Encoding::UTF_8)   #=> "Û"

方法文档中的更多信息。

于 2015-02-24T13:37:13.200 回答