2011-04-06 14 views

Respuesta

19

En Ruby 1.8.x, String # inspect puede ser lo que estás buscando, p.

>> multi_byte_str = "hello\330\271!" 
=> "hello\330\271!" 

>> multi_byte_str.inspect 
=> "\"hello\\330\\271!\"" 

>> puts multi_byte_str.inspect 
"hello\330\271!" 
=> nil 

En Ruby 1.9 si quieres caracteres multi-byte a tienen sus bytes componente escapada, es posible que desee decir algo como:

>> multi_byte_str.bytes.to_a.map(&:chr).join.inspect 
=> "\"hello\\xD8\\xB9!\"" 

Tanto en Rubí 1.8 y 1.9 si está en su lugar interesados en los puntos de código unicode (escapado), usted puede hacer esto (aunque se escapa material imprimible también):

>> multi_byte_str.unpack('U*').map{ |i| "\\u" + i.to_s(16).rjust(4, '0') }.join 
=> "\\u0068\\u0065\\u006c\\u006c\\u006f\\u0639\\u0021" 
+0

¡Esto fue muy útil! Estaba a punto de escribirlo y me ahorró tiempo, elegante señor de la composición. Utilicé esto para codificar algunos consejos para un pequeño tutorial de CSS que hice en Codepen, por lo que no son visibles para el usuario hasta que se analicen en JSON. ¡Echale un vistazo! http://cdpn.io/oznaH –

8

Si ha rieles dando vueltas puede utilizar el codificador JSON para esto:

require 'active_support' 
x = ActiveSupport::JSON.encode('µ') 
# x is now "\u00b5" 

El codificador JSON que no es Rails no "\ u" especifica Unicode.

+0

realmente buena solución !!!!!! ¡muchas gracias! –

3

Puede usar directamente caracteres Unicode si solo agrega #Encoding: UTF-8 a la parte superior de su archivo. Luego puede usar libremente ä, ǹ, ú, etc. en su código fuente.

-1

prueba esta joya. Convierte Unicode o no ASCII puntuacion y símbolos para puntuacion ASCII más cercana y símbolos

https://github.com/qwuen/punctuate

Ejemplo de uso:. "100%" marcan => "100%"

la gema utiliza la referencia en https://lexsrv3.nlm.nih.gov/LexSysGroup/Projects/lvg/current/docs/designDoc/UDF/unicode/DefaultTables/symbolTable.html para la conversión.

+0

Este es su propio repositorio (o uno al que usted contribuye principalmente). Que no divulgaste Básicamente es spam. Y no responde la pregunta. –

Cuestiones relacionadas