Z jakiegoś powodu ciągi Unicode nie zachowują się poprawnie w Rhino, Mozilla's JavaScript engine. Jeśli wprowadzę tekst Unicode do REPL lub nim manipuluję, to powróci bełkot.Unicode w Rhino
js> 'тотальная киборгизация'
B>B0;L=0O :81>@3870F8O
znaków ASCII działać dobrze.
js> 'reprap for everyone'
reprap for everyone
Unix polecenia działają zbyt dobrze:
$ echo 'тотальная киборгизация'
тотальная киборгизация
wyjście JVM też jest w porządku, działa class Test { public static void main(String[] args) { System.out.println("тотальная киборгизация"); } }
wyprowadza cyrylicy poprawnie.
wersje Java i Rhino to:
$ 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
językowe:
$ echo $LC_TYPE
$ echo $LANG
en_US.UTF-8
Zmiana LC_ALL
do en_US.UTF-8
nie pomaga.
Czy ten problem ma związek z tym pytaniem StackOverflow, Javascript using UCS-2?
Na czym polega problem i jak mogę użyć właściwego Unicode w REPL?
Nie widzę tego samego problemu. Używam 'Rhino 1.7 release 2 2009 03 22' oraz' java version "1.6.0_26" '' Java TM TM SE Runtime Environment (kompilacja 1.6.0_26-b03-384-9M3425) '' Java HotSpot (TM) 64-bitowa maszyna wirtualna serwera (kompilacja 20.1-b02-384, tryb mieszany) 'w systemie Mac OS X 10.5.8. –
Spróbuj wyeliminować Rhino ze środowiska. Co się stanie, gdy podasz linii poleceń Unix polecenie "echo" тотальная киборгизация'', bez uruchamiania Rhino? –
Dane wyjściowe, które uzyskujesz, po uwzględnieniu znaków kontrolnych, są w rzeczywistości UTF-16, a nie UTF-8. (Biorąc to pod uwagę, fakt, że zwykły ASCII działa, jest osobliwy.) Możesz spróbować skompilować i uruchomić tę Javę, aby sprawdzić, czy ustawienia maszyny wirtualnej są obwiniane: 'test klasy { public static void main (String [] args) { System.out.println ("тотальная киборгизация"); } } ' – psmay