2014-12-27 28 views
1

初学者的问题:我在标准命令shell(代码页是850)的Windows 8机器上使用scala 2.11.4。 如果键入“穆勒”在斯卡拉提示符 斯卡拉>“穆勒” RES0:字符串= M缪勒windows shell中的scala默认编码

同样的情况,在我的第一阶试验计划:

import scala.io.StdIn.readLine 

object Hello { 
    def main(args: Array[String]) { 
     val myname=readLine("What is your name?","ISO-8859-1") 
     println("Hallo " + myname + "!") 
    } 
} 

通过调用它“斯卡拉你好”收益率: 你叫什么名字?Müller Hallo M?ller!

我猜println使用不同的编码作为默认值(顺便说一句,“ISO-8859-1”部分没有改变任何东西)?

+0

你用'UTF-8'编码试过了吗?我无法测试,但在Unix机器上,默认按预期工作。 – 2014-12-27 21:14:38

+0

在启动scala repl之前做'chcp 1252'是做什么的?我猜你没有在cmd shell上启用unicode codepoints。 – 2014-12-28 06:31:00

+0

Scala repl只是在启动时使用任何可用的编码 - 也就是说,它从现有环境中继承这些属性。 – 2014-12-28 06:31:45

回答

0

scala> System.getProperty(“file.encoding”)显示cp1252。 所以我生成了一个环境变量(比马丁Sturm thanx) JAVA_OPTS =“ - Dfile.encoding = CP850” 和目前一切正常预期(慕尼黑istschön)。