/ / Ruby che tenta di creare dinamicamente una stringa unicode genera un errore "escape Unicode non valido" - ruby, string, dynamic, unicode

Ruby tenta di creare dinamicamente stringa unicode genera l'errore "Unicode escape non valido" - ruby, string, dynamic, unicode

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")
=> "अ"