2012-12-13 15 views
7

Per qualche motivo le stringhe Unicode non si comportano correttamente in Rhino, Mozilla's JavaScript engine. Se inserisco il testo Unicode nel REPL, o lo manipolo, ritorna indietro senza senso.Unicode in Rhino

js> 'тотальная киборгизация' 
B>B0;L=0O :81>@3870F8O 

I caratteri ASCII funzionano bene.

js> 'reprap for everyone' 
reprap for everyone 

comandi Unix funzionano bene troppo:

$ echo 'тотальная киборгизация' 
тотальная киборгизация 

uscita JVM è troppo bella, correndo class Test { public static void main(String[] args) { System.out.println("тотальная киборгизация"); } } uscite correttamente cirillico.

versioni Java e Rhino sono:

$ java -version 
java version "1.7.0_09" 
OpenJDK Runtime Environment (IcedTea7 2.3.3) (7u9-2.3.3-0ubuntu1~12.10.1) 
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode) 
$ rhino 
Rhino 1.7 release 3 2012 05 18 

Impostazioni locali:

$ echo $LC_TYPE 

$ echo $LANG 
en_US.UTF-8 

Cambiare LC_ALL a en_US.UTF-8 non aiuta.

Questo problema ha a che fare con questa domanda StackOverflow, Javascript using UCS-2?

Qual è il problema e come utilizzare Unicode corretto in Rhino REPL?

+0

Non vedo lo stesso problema. Sto usando 'Rhino 1.7 release 2 2009 03 22' e' java version '1.6.0_26 "' 'Java (TM) SE Runtime Environment (build 1.6.0_26-b03-384-9M3425)' 'Java HotSpot (TM) 64-Bit Server VM (build 20.1-b02-384, modalità mista) 'su Mac OS X 10.5.8. –

+1

Prova ad eliminare Rhino dall'ambiente. Cosa succede quando dai il comando della riga di comando di Unix, 'echo' тотальная киборгизация'', senza eseguire Rhino? –

+1

L'output ottenuto, dopo aver considerato i caratteri di controllo, è in realtà UTF-16, non UTF-8. (Dato questo, il fatto che l'ASCII semplice funzioni è peculiare.) Potresti provare a compilare ed eseguire questo Java per vedere se le impostazioni della VM sono da biasimare: 'class Test { public static void main (String [] args) { System.out.println ("тотальная киборгизация"); } } – psmay

risposta