2011-04-06 19 views

risposta

19

In Ruby 1.8.x, String # inspect può essere quello che stai cercando, ad es.

>> 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 

In Ruby 1.9, se si vuole caratteri multi-byte di avere i loro byte componenti sfuggiti, si potrebbe desiderare di dire qualcosa come:

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

In entrambi Ruby 1.8 e 1.9, se siete invece interessati nei punti di codice unicode (sfuggito), si potrebbe fare questo (anche se sfugge roba stampabile troppo):

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

Questo è stato super utile! Stavo per scriverlo da solo, e mi ha fatto risparmiare tempo, elegante composizione signore. L'ho usato per codificare alcuni suggerimenti per un piccolo tutorial CSS che ho realizzato su Codepen, quindi non sono visibili all'utente fino a quando non vengono analizzati in JSON! controlla! http://cdpn.io/oznaH –

8

Se avete Rails calci in giro è possibile utilizzare l'encoder JSON per questo:

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

Il solito codificatore JSON non Rails non "\ u" indica Unicode.

+0

soluzione davvero buona !!!!!! grazie mille! –

3

È possibile utilizzare direttamente i caratteri unicode se si aggiunge #Encoding: UTF-8 all'inizio del file. Quindi puoi usare liberamente ä, ǹ, ú e così via nel tuo codice sorgente.

-1

prova questa gemma. Converte Unicode o non-ASCII di punteggiatura e simboli di punteggiatura ASCII più vicino e simboli

https://github.com/qwuen/punctuate

esempio di utilizzo:. "100%" punteggiano => "100%"

la gemma utilizza il riferimento in https://lexsrv3.nlm.nih.gov/LexSysGroup/Projects/lvg/current/docs/designDoc/UDF/unicode/DefaultTables/symbolTable.html per la conversione.

+0

Questo è il tuo repository (o uno a cui sei il principale contributore). Che non hai rivelato. Quindi fondamentalmente è spam. E non risponde alla domanda. –

Problemi correlati