【发布时间】:2018-02-26 10:16:14
【问题描述】:
我有一个与sbt test encoding hickup 非常相似的问题,但由于答案不适用而且我的案例是 Scala 代码,所以我在这里问。
我在单元测试中有一个包含非 ASCII 字符的字符串。此测试在 Linux 上运行良好,从 IntelliJ 运行时在 Windows 上运行良好。但是,当使用sbt test 从 Windows shell 运行时,它们会失败。如果我打印字符串humanité,它在失败的情况下显示为humanitΘ。文件编码为 UTF-8。
println(new java.io.InputStreamReader(System.in).getEncoding) 从 IntelliJ 运行时返回 UTF8,从 shell 运行时返回 Cp1252。我尝试了各种方法来更改编码:
- 运行
sbt "-Dfile.encoding=UTF-8" test - 检查我的 build.sbt 中定义的 scalacOptions 是否包含“-encoding”、“UTF8”
但默认编码始终是Cp1252(也许这很正常?)并且测试一直失败。
失败的代码如下:
val stringToEncrypt = "l'humanité"
println(test)
从 IntelliJ 我得到:
l'humanité
从运行 sbt 的 windows shell:
l'humanitΘ
【问题讨论】:
-
你在使用 Source.fromInputStream 吗?
-
我在我的项目中的某个地方使用它,但不是在我认为的测试路径中。
-
消费流时需要显式设置编码,suc
-
不幸的是,我的问题不在使用这种方法的流程中。