Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby输出Unicode字符_Ruby_String_Unicode_Utf 8_Ruby 1.8.7 - Fatal编程技术网

Ruby输出Unicode字符

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

我不是一个Ruby开发人员,但我使用Capistrano进行PHP部署。我正在尝试清理脚本的输出,并尝试添加一个脚本,如中所述

问题是如果我这样做:

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" %>