当我在REPL中输入中文字符时,只显示问号,如我的第二个屏幕截图所示。我怎样才能解决这个问题?我的scala版本是2.9.0.1和操作系统窗口
即使我使用属性-Dfile.encoding="UTF-8"
答案 0 :(得分:5)
您必须告诉REPL您要使用unicode(或任何编码)。试试
scala -Dfile.encoding="UTF-8"
打开REPL时。
答案 1 :(得分:3)
啊,你在Windows上。我认为目前不支持这种做法。我知道发生了什么。有关调查,请参阅https://issues.scala-lang.org/browse/SI-4711。
问题的根源是:
getc
的某种变体来读取控制台上的字符,并且不支持双字节字符。可以使用的API调用是ReadConsoleInputW
。System.out
,它不能可靠地打印unicode字符 - 尽管您问题中的第一个快照似乎暗示它可以正常工作 * 。 我不是Scala团队的成员,但我试图修复它,我可能会有更多或更少的工作。请参阅https://github.com/fusesource/jansi-native/blame/master/src/main/java/org/fusesource/jansi/internal/WindowsSupport.java(基于WriteConsoleW
和ReadConsoleInputW
以及REPL ILoop
来源中的其他添加内容 - 更改位于github上my fork的某处 - 未更新而。
如果您有兴趣,我可以提供2.9.0.1 scala-compiler.jar和jline.jar的实验分支,您可以告诉我它是否有效。
* 打印:1: xx 2:xx 3:xx 4:x 5:x
的代码是什么,其中x是一些中文字符?