it-swarm.dev

Caractere Unicode de Saída Ruby

Eu não sou um desenvolvedor de Ruby por comércio, mas estou usando o Capistrano para implementações PHP. Eu estou tentando limpar a saída do meu script e estou tentando adicionar um marca de seleção unicode como discutido em este blog .

O problema é se eu faço:

checkmark = "\u2713"
puts checkmark

Emite "\ u2713" em vez de ✓

Eu pesquisei por aí e não consigo encontrar nenhum lugar que discuta isso. 

TLDR: Como eu puts ou print o unicode checkmark U-2713?

EDIT


Estou executando o Ruby 1.8.7 no meu Mac (OSX Lion), portanto não posso usar o método encode. Minha concha é festança em iTerm2.

34
Jeremy Harris

Em Ruby 1.9.x +

Use String#encode :

checkmark = "\u2713"
puts checkmark.encode('utf-8')

impressões

Em Ruby 1.8.7

puts '\u2713'.gsub(/\\u[\da-f]{4}/i) { |m| [m[-4..-1].to_i(16)].pack('U') }
✓
43
falsetru

a resposta do falsetru está incorreta.

checkmark = "\u2713"
puts checkmark.encode('utf-8')

Isso transcodifica a marca de verificação da codificação atual do sistema para a codificação UTF-8. (Isso funciona apenas em um sistema cujo padrão já é UTF-8.)

A resposta correta é:

puts checkmark.force_encoding('utf-8')

Isso modifica a codificação da string, sem modificar nenhuma sequência de caracteres.

15
zw963

Nas versões mais recentes do Ruby, você não precisa impor a codificação. Aqui está um exemplo com 2.1.2:

2.1.2 :002 > "\u00BD"
 => "½"

Apenas certifique-se de usar aspas duplas!

11
sixty4bit

O mesmo vale para o ERB, sem necessidade de codificação forçada, funciona perfeitamente, testado no Ruby 2.3.0

    <%= "\u00BD" %>

Muita apreciação

0
crystallinering