Ich bin kein professioneller Ruby-Entwickler, aber ich verwende Capistrano für PHP -Einstellungen. Ich versuche, die Ausgabe meines Skripts aufzuräumen, und ich versuche, ein Unicode-Häkchen wie in dieses Blog diskutiert - hinzuzufügen.
Das Problem ist, wenn ich:
checkmark = "\u2713"
puts checkmark
Es gibt "\ u2713" anstelle von ✓ aus
Ich habe gegoogelt und kann einfach nirgendwo etwas finden, das das bespricht.
TLDR: Wie puts
oder print
das Unicode-Häkchen U-2713?
EDIT
Ich verwende Ruby 1.8.7 auf meinem Mac (OSX Lion) und kann daher die Methode encode
nicht verwenden. Meine Shell ist Bash in iTerm2.
Verwenden Sie String#encode
:
checkmark = "\u2713"
puts checkmark.encode('utf-8')
druckt
✓
puts '\u2713'.gsub(/\\u[\da-f]{4}/i) { |m| [m[-4..-1].to_i(16)].pack('U') }
✓
falsetru's Antwort ist falsch.
checkmark = "\u2713"
puts checkmark.encode('utf-8')
Dadurch wird das Häkchen von der aktuellen Systemcodierung in UTF-8-Codierung umcodiert. (Dies funktioniert nur auf einem System, dessen Standardwert bereits UTF-8 ist.)
Die richtige Antwort ist:
puts checkmark.force_encoding('utf-8')
Dadurch wird die Codierung der Zeichenfolge geändert, ohne dass eine Zeichenfolge geändert wird.
In neueren Ruby-Versionen müssen Sie keine Kodierung erzwingen. Hier ist ein Beispiel mit 2.1.2
:
2.1.2 :002 > "\u00BD"
=> "½"
Stellen Sie einfach sicher, dass Sie doppelte Anführungszeichen verwenden!
Wenn Sie ein Emoji drucken möchten, müssen Sie es zusätzlich mit geschweiften Klammern umgeben.
irb(main):001:0> "\u{1F600}"
=> "????"
Dasselbe wie in ERB wie oben beschrieben, keine erzwungene Kodierung erforderlich, funktioniert einwandfrei, getestet mit Ruby 2.3.0
<%= "\u00BD" %>
Viel Anerkennung