Je ne suis pas un développeur Ruby de métier, mais j'utilise Capistrano pour les déploiements PHP. J'essaie de nettoyer la sortie de mon script et j'essaie d'ajouter un coche unicode comme indiqué dans ce blog .
Le problème est que si je le fais:
checkmark = "\u2713"
puts checkmark
Il génère "\ u2713" au lieu de ✓
J'ai cherché sur Google et je ne trouve aucun endroit pour en discuter.
TLDR: Comment est-ce que je puts
ou print
la coche unicode U-2713?
MODIFIER
J'utilise Ruby 1.8.7 sur mon Mac (OSX Lion), je ne peux donc pas utiliser la méthode encode
. Mon Shell est Bash dans iTerm2.
Utilisez String#encode
:
checkmark = "\u2713"
puts checkmark.encode('utf-8')
empreintes
✓
puts '\u2713'.gsub(/\\u[\da-f]{4}/i) { |m| [m[-4..-1].to_i(16)].pack('U') }
✓
la réponse de falsetru est incorrecte.
checkmark = "\u2713"
puts checkmark.encode('utf-8')
Ceci transcode la coche du codage actuel du système en codage UTF-8 . (Cela ne fonctionne que sur un système dont le défaut est déjà UTF-8.)
La bonne réponse est:
puts checkmark.force_encoding('utf-8')
Cela modifie le codage de la chaîne, sans modifier aucune séquence de caractères.
Dans les versions plus récentes de Ruby, il n'est pas nécessaire d'appliquer le codage. Voici un exemple avec 2.1.2
:
2.1.2 :002 > "\u00BD"
=> "½"
Assurez-vous simplement que vous utilisez des guillemets doubles!
Même chose que ci-dessus dans ERB, aucun codage forcé requis, fonctionne parfaitement, testé à Ruby 2.3.0
<%= "\u00BD" %>
Beaucoup d'appréciation