[英]Ruby Output Unicode Character
我不是 Ruby 開發人員,而是使用 Capistrano 進行 PHP 部署。 我正在嘗試清理腳本的輸出,並嘗試添加本博客中討論的unicode 復選標記。
問題是如果我這樣做:
checkmark = "\u2713"
puts checkmark
它輸出“\✓”而不是✓
我已經用谷歌搜索了,我找不到任何討論這個的地方。
TLDR:如何puts
或print
unicode 復選標記 U-2713?
編輯
我在 Mac (OSX Lion) 上運行 Ruby 1.8.7,因此無法使用encode
方法。 我的 shell 是 iTerm2 中的 Bash。
更新[4/8/2019] 添加了參考圖片,以防網站宕機。
使用String#encode
:
checkmark = "\u2713"
puts checkmark.encode('utf-8')
版畫
✓
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.