私はRuby dev by tradeですが、CapistranoをPHPデプロイメントに使用しています。スクリプトの出力をクリーンアップしようとしています。 このブログ で説明されているように nicodeチェックマーク を追加します。
問題は私がそうする場合です:
checkmark = "\u2713"
puts checkmark
✓の代わりに「\ u2713」を出力します
私はグーグルで調べましたが、これについて議論しているところはどこにも見つかりません。
TLDR:ユニコードチェックマークU-2713をputs
またはprint
する方法
[〜#〜] edit [〜#〜]
Mac(OSX Lion)でRuby 1.8.7)を実行しているため、encode
メソッドを使用できません。シェルはiTerm2のBashです。
[〜#〜] update [〜#〜][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"
=> "½"
必ず二重引用符を使用してください!
追加の注意事項として、絵文字を印刷する場合は、中括弧で囲む必要があります。
irb(main):001:0> "\u{1F600}"
=> "????"
上記と同じERBでも、強制エンコーディングは不要で、完全に機能し、Ruby 2.3.0でテスト済み
<%= "\u00BD" %>
多くの感謝