Ho un requisito in cui desidero creare dinamicamente una stringa unicode usando l'interpolazione. si prega di consultare il seguente codice provato in irb
2.1.2 :016 > hex = 0x0905
=> 2309
2.1.2 :017 > b = "u#{hex}"
SyntaxError: (irb):17: invalid Unicode escape
b = "u#{hex}"
Il codice esadecimale 0x0905 corrisponde a unicode per vocale indipendente per DEVANAGARI LETTER A.
Non riesco a capire come ottenere il risultato desiderato.
risposte:
3 per risposta № 1È possibile passare una codifica a Integer#chr
:
hex = 0x0905
hex.chr("utf-8") #=> "अ"
Il parametro può essere omesso, se Encoding::default_internal
è impostato su utf-8:
$ ruby -E utf-8:utf-8 -e "p 0x0905.chr"
"अ"
Puoi anche aggiungere punti di codice ad altre stringhe:
"" << hex #=> "अ"
1 per risposta № 2
Si verifica l'interpolazione di stringhe dopo ruby decodifica le fughe, quindi quello che stai cercando di fare è interpretato da ruby come una fuga incompleta.
Per creare un carattere Unicode da un numero, è necessario pack
esso:
hex = 0x0905
[hex].pack("U")
=> "अ"