【发布时间】:2017-06-09 20:47:20
【问题描述】:
我的问题类似于Printing Unicode from Scala interpreter 和scala default encoding in windows shell,但更详细地介绍了 Scala(2.12.2 版)与 Groovy(2.4.7 版)的 WRT 不同行为。
我有以下代码 sn-p(恰好是有效的 Scala 和 Groovy 代码):
println("└─ ");
println("├─ ");
println(System.getProperty("file.encoding"));
在其上运行 scala 解释器时,它会显示 Windows 终端(所有 cmd、PowerShell、Git Bash / mintty)
$ scala a.scala
??
??
Cp1252
但是,通过它显示的 groovy 解释器运行完全相同的代码:
$ groovy a.scala
└─
├─
Cp1252
通过阅读链接问题的答案,我的理解是输出(完全)取决于 file.encoding 系统属性的值。如果是这样,那么如果使用的 file.encoding 相同,那么 Scala 和 Groovy 之间的输出有何不同?
编辑: This answer 似乎确认这是 Scala 编译器用于读取源代码文件的编码问题,这似乎默认为 file.encoding 设置的任何值,甚至如果文件显然是 UTF-8 编码的。我仍然想知道为什么 Scala 在这里不如 Groovy 聪明...
编辑 2:我可以通过运行解决此问题
$ scala -Dfile.encoding=UTF8 a.scala
└─
├─
UTF8
但这仍然不能回答为什么尽管将file.encoding 设置为Cp1252,Groovy 还是能做到这一点。
【问题讨论】:
标签: windows scala groovy encoding utf-8