繁体   English   中英

Ruby 输出 Unicode 字符

[英]Ruby Output Unicode Character

我不是 Ruby 开发人员,而是使用 Capistrano 进行 PHP 部署。 我正在尝试清理脚本的输出,并尝试添加本博客中讨论的unicode 复选标记

问题是如果我这样做:

checkmark = "\u2713"
puts checkmark

它输出“\✓”而不是✓

我已经用谷歌搜索了,我找不到任何讨论这个的地方。

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

编辑


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


更新[4/8/2019] 添加了参考图片,以防网站宕机。

Unicode 复选标记 U+2713

在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') }
✓

falsetru的答案是不正确的。

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

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

正确答案是:

puts checkmark.force_encoding('utf-8')

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

在较新版本的Ruby中,您不需要强制执行编码。 这是2.1.2一个例子:

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

只要确保你使用双引号!

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

    <%= "\u00BD" %>

非常欣赏

另外请注意,如果要打印表情符号,则必须用大括号括起来。

irb(main):001:0> "\u{1F600}"
=> "😀"

我们如何在较新版本的 ruby​​ 中按原样打印

checkmark = "\✓" 放置复选标记

这应该按原样打印 \✓

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM