Ах, вы на Windows.Я не думаю, что это поддерживается в данный момент.У меня есть представление о том, что происходит.См. https://issues.scala -lang.org / browse / SI-4711 для расследования.
Корень проблемы:
- jline2 (его янсиЗависимость) загружает DLL, которая использует какой-либо вариант 8 бит
getc
для чтения символов на консоли и не поддерживает двухбайтовые символы.Вместо этого можно использовать вызов API: ReadConsoleInputW
. - В выходной печати REPL используется базовый Java
System.out
, который не печатает символы Юникода надежно - хотя ваш первый снимок в вашем вопросе, кажется, подразумевает, что онработы *.
Я не являюсь частью команды Scala, но я пытался это исправить, и у меня может что-то работать более или менее.См. https://github.com/fusesource/jansi-native/blame/master/src/main/java/org/fusesource/jansi/internal/WindowsSupport.java (на основе WriteConsoleW
и ReadConsoleInputW
и других дополнений в источнике REPL ILoop
- изменения находятся где-то в моем форке на github - не обновляются в течение некоторого времени.
Если вам интересно, я могу предоставить экспериментальный форк 2.9.0.1 scala-compiler.jar и jline.jar, и вы можете сказать мне, работает ли он.
* Какой код печатает :1: xx 2:xx 3:xx 4:x 5:x
, где x - какой-то китайский символ?