2012-12-13 10 views
7

Aus irgendeinem Grund verhalten sich Unicode-Zeichenfolgen in Rhino, Mozilla's JavaScript engine nicht ordnungsgemäß. Wenn ich Unicode-Text in die REPL-Datei eingabe oder manipuliere, gibt es wieder Kauderwelsch zurück.Unicode in Rhino

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

ASCII-Zeichen funktionieren gut.

js> 'reprap for everyone' 
reprap for everyone 

Unix-Befehle zu funktionieren:

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

JVM Ausgang zu fein ist, läuft class Test { public static void main(String[] args) { System.out.println("тотальная киборгизация"); } } Cyrillic korrekt ausgibt.

Java und Rhino-Versionen sind:

$ 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 

Locales:

$ echo $LC_TYPE 

$ echo $LANG 
en_US.UTF-8 

Ändern LC_ALL zu en_US.UTF-8 hilft nicht.

Hat dieses Problem mit dieser StackOverflow-Frage zu tun, Javascript using UCS-2?

Was ist das Problem, und wie kann ich richtigen Unicode in Rhino REPL verwenden?

+0

Ich sehe das gleiche Problem nicht. Ich verwende "Rhino 1.7 Release 2 2009 03 22" und "Java Version" 1.6.0_26 "Java (TM) SE Laufzeitumgebung (Build 1.6.0_26-b03-384-9M3425)" 'Java HotSpot (TM) 64-Bit-Server-VM (Build 20.1-b02-384, gemischter Modus) 'unter Mac OS X 10.5.8. –

+1

Versuchen Sie, Rhino aus der Umgebung zu entfernen. Was passiert, wenn Sie der Unix-Kommandozeile den Befehl 'echo 'тотальная киборгизация' geben, ohne Rhino zu starten? –

+1

Die Ausgabe, die Sie erhalten, nach der Berücksichtigung von Steuerzeichen, ist eigentlich UTF-16, nicht UTF-8. (Angesichts dessen ist die Tatsache, dass das einfache ASCII funktioniert, eigenartig.) Sie könnten versuchen, dieses Java zu kompilieren und auszuführen, um zu sehen, ob die Einstellungen der VM schuld sind: 'class Test { public static void main (String [] args) { System.out.println ("тотальная киборгизация"); } } ' – psmay

Antwort