Ruby输出Unicode字符
我不是一个Ruby开发人员,但我使用Capistrano进行PHP部署。我正在尝试清理脚本的输出,并尝试添加一个脚本,如中所述 问题是如果我这样做:Ruby输出Unicode字符,ruby,string,unicode,utf-8,ruby-1.8.7,Ruby,String,Unicode,Utf 8,Ruby 1.8.7,我不是一个Ruby开发人员,但我使用Capistrano进行PHP部署。我正在尝试清理脚本的输出,并尝试添加一个脚本,如中所述 问题是如果我这样做: checkmark = "\u2713" puts checkmark 它输出“\u2713”而不是✓ 我在谷歌上搜索了一下,就是找不到任何讨论这个问题的地方 TLDR:如何放入或打印unicode复选标记U-2713 编辑 我在Mac(OSX Lion)上运行Ruby 1.8.7,因此无法使用encode方法。我的壳在iTerm2中是Bash
checkmark = "\u2713"
puts checkmark
它输出“\u2713”而不是✓
我在谷歌上搜索了一下,就是找不到任何讨论这个问题的地方
TLDR:如何放入
或打印
unicode复选标记U-2713
编辑
我在Mac(OSX Lion)上运行Ruby 1.8.7,因此无法使用
encode
方法。我的壳在iTerm2中是Bash
更新[4/8/2019]添加了参考图像,以防网站宕机 在Ruby 1.9.x中+ 使用: 印刷品
✓
在Ruby 1.8.7中
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 1.8.7,显然,编码方法在1.9之前是不可用的。在1.9之前是如何实现的?@cillosis,我添加了Ruby 1.8.7兼容版本。你应该使用'\u2713'
或“\\u2713”
,因为“\u2713”==“u2713“
在ruby 1.8.Bam中!我第一次尝试了你的解决方案,但它不起作用。然后转到单引号,它成功了!谢谢:)我可以简单地做一些像checkmark=“\u2713.encode('utf-8');放置复选标记
,因此编码保存到变量中。这在Ruby 2.2.2中适用。@Lori,“\u{1f3e0}”
('1f3e0'==127968.to_(16)
)您使用的是什么操作系统和shell?什么版本的ruby?@DavidGrayson查看我的编辑。不错,但似乎不适用于字符串插值a=1F600;放置“\u{{a}”
这条关于确保使用双引号的评论救了我一命——我正在绞尽脑汁想弄清楚为什么这不起作用!
2.1.2 :002 > "\u00BD"
=> "½"
<%= "\u00BD" %>