2012-05-07 12 views
6

Sto provando a lavorare con caratteri unicode e le informazioni fornite dal metodo .ord della stringa non mi aiutano. Sono abituato a lavorare con codici come "\ uXXXX".ruby: valore decimale del carattere unicode per la conversione di uXXXX? Il metodo .ord non funziona

ruby-1.9.3-p0 :119 > form[0] 
=> "כ" 

ruby-1.9.3-p0 :120 > form[0].ord 
=> 1499 
ruby-1.9.3-p0 :121 > puts "\u1499" 
ᒙ 

...

:-(

I valori apportati dalle .ord sembrano corrispondere ai 'punti decimali' di cui qui: http://www.i18nguy.com/unicode/hebrew.html

non lo faccio sapere come lavorare con questi valori Come ottengo il codice \ uXXXX da quel personaggio?

Grazie

+0

ho scoperto come imballare che valore decimale di nuovo in un carattere Unicode @ http://stackoverflow.com/questions/4620549/convert-unicode-into- carattere-con-rubino, ma vorrebbe comunque sapere come ottenere l'altro codice. –

risposta

4

mu è la risposta troppo corta è cool.

Ma, la risposta più semplice è:

'好'.ord.to_s(16)  # => '597d' 
+0

Hai ragione ~. Grazie. Comunque puoi usare' 5db' come questo: 'puts" \ u {5db} "' – zw963

14

La sintassi \u utilizza un valore esadecimale, a cui viene assegnato un valore decimale. Volete:

>> "%4.4x" % form[o].ord 
"05db" 
>> puts "\u05db" 
כ 
+0

Grazie! Cosa sta facendo la parte "% 4.4x"%? –

+0

@WalrustheCat: http://ruby-doc.org/core-1.9.3/String.html#method-i-25, '"% .4x "' è sufficiente. –

+1

Preferisco la forma più autoesplicativa '% 04x' per lo zero padding. –

Problemi correlati