在Ruby中显示扩展ASCII字符

时间:2015-02-24 12:42:38

标签: ruby extended-ascii

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

puts 57.chr

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

puts 219.chr

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

4 个答案:

答案 0 :(得分:10)

  

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

现在你应该使用UTF-8。

以下是使用Box Drawing Unicode块中的字符的示例:

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

输出:

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

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

您可以使用:

puts "\u2588"

或:

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

或简单地说:

puts '█'

答案 1 :(得分:4)

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

219.chr(Encoding::UTF_8)

答案 2 :(得分: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')
# => "Û" 

答案 3 :(得分:0)

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

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

method doc中的更多信息。