簡體   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