Ruby输出Unicode字符

问题描述 投票:36回答:4

我不是一个Ruby dev的交易,但我使用Capistrano进行PHP部署。我正在尝试清理脚本的输出,并尝试添加unicode check mark中讨论的this blog

问题是如果我这样做:

checkmark = "\u2713"
puts checkmark

它输出“\ u2713”而不是✓

我已经google了,我找不到任何讨论这个的地方。

TLDR:我如何putsprint unicode复选标记U-2713?

编辑


我在我的Mac(OSX Lion)上运行Ruby 1.8.7,因此无法使用encode方法。我的shell是iTerm2中的Bash。


更新[4/8/2019]在网站出现故障的情况下添加了参考图片。

Unicode Check Mark U+2713

ruby string unicode utf-8 ruby-1.8.7
4个回答
44
投票

在Ruby 1.9.x +中

使用String#encode

checkmark = "\u2713"
puts checkmark.encode('utf-8')

版画

在Ruby 1.8.7中

puts '\u2713'.gsub(/\\u[\da-f]{4}/i) { |m| [m[-4..-1].to_i(16)].pack('U') }
✓

17
投票

falsetru的答案是不正确的。

checkmark = "\u2713"
puts checkmark.encode('utf-8')

这会将当前系统编码的复选标记转码为UTF-8编码。 (仅适用于默认为UTF-8的系统。)

正确答案是:

puts checkmark.force_encoding('utf-8')

这会修改字符串的编码,而不会修改任何字符序列。


14
投票

在较新版本的Ruby中,您不需要强制执行编码。以下是2.1.2的示例:

2.1.2 :002 > "\u00BD"
 => "½"

只要确保你使用双引号!


0
投票

与上面的ERB相同,不需要强制编码,完美运行,在Ruby 2.3.0上测试

    <%= "\u00BD" %>

非常欣赏

© www.soinside.com 2019 - 2024. All rights reserved.