Yo no soy un Rubí dev por el comercio, pero estoy usando Capistrano para PHP implementaciones. Estoy tratando de limpieza de la salida de mi script y estoy tratando de agregar un unicode marca de verificación como se discutió en la este blog.

El problema es que si hago:

checkmark = "\u2713"
puts checkmark

Envía «\u2713» en lugar de ✓

He buscado en google y yo simplemente no puede encontrar en cualquier parte que trata sobre esto.

TLDR: ¿Cómo puedo puts o print el unicode marca de verificación U-2713?

EDITAR


Estoy corriendo Ruby 1.8.7 en mi Mac (OSX Lion) por lo que no puede utilizar el encode método. Mi shell Bash es en iTerm2.


ACTUALIZACIÓN [4/8/2019] se ha Añadido una imagen de referencia en caso de que el sitio nunca se pone.

Ruby Salida De Caracteres Unicode

  • ¿Qué OS y shell están utilizando? ¿Qué versión de ruby?
  • Véase mi edición.

5 Comentarios

  1. 44

    En Ruby 1.9.x+

    Uso String#codificar:

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

    imprime

    En Ruby 1.8.7

    puts '\u2713'.gsub(/\\u[\da-f]{4}/i) { |m| [m[-4..-1].to_i(16)].pack('U') }
    
    • Yo debería haber mencionado que tengo Ruby 1.8.7 y al parecer el encode método no está disponible hasta 1.9. ¿Cómo se hizo antes de la 1.9?
    • He añadido Ruby 1.8.7 versión compatible. Usted debe utilizar '\u2713' o "\\u2713", porque "\u2713" == "u2713" en ruby 1.8.
    • Bam! Probé por primera vez su solución y no estaba funcionando. Luego pasó a las comillas simples y funcionó! Gracias 🙂
    • Yo era capaz de simplemente hacer algo como checkmark = "\u2713".encode('utf-8'); puts checkmark y por lo que la codificación fue guardado en la variable. Esto funciona para mí en Ruby 2.2.2.
    • Si desea notificar OP, mención OP o comentario sobre la cuestión. De lo contrario, el OP no será notificado.
    • marca = «\u2663» pone la marca de verificación.encode(‘utf-8’) imprime ♣ para mí!
    • "\u127968".encode("utf-8") me está dando ቹ68. Yo estaba esperando para 🏠. Hay un Rubí manera de imprimir la parte superior de los rangos de Unicode?
    • 127968.to_s(16))

  2. 17

    falsetru la respuesta es incorrecta.

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

    Este transcodifica la marca de verificación, el actual sistema de codificación para la codificación UTF-8.
    (Que sólo funciona en un sistema cuyo defecto ya es UTF-8.)

    La respuesta correcta es:

    puts checkmark.force_encoding('utf-8')

    Esto modifica la cadena de la codificación, sin modificar cualquier secuencia de caracteres.

    • Creo que este debería ser aceptada respuesta.
  3. 14

    En las nuevas versiones de Ruby, no es necesario aplicar la codificación. Aquí está un ejemplo con 2.1.2:

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

    Sólo asegúrese de usar comillas dobles!

  4. 0

    Mismo va como anteriormente en el ERB, no forzar la codificación necesaria, funciona perfectamente, probado en Ruby 2.3.0

        <%= "\u00BD" %>

    Mucho aprecio

  5. 0

    Como una nota adicional, si se desea imprimir un emoji, usted tiene que rodean con llaves.

    irb(main):001:0> "\u{1F600}"
    => "😀"

Dejar respuesta

Please enter your comment!
Please enter your name here