sbt test encoding问题

时间:2018-02-26 10:16:15

标签: scala utf-8

我有一个与sbt test encoding hickup非常相似的问题,但由于答案不适用,我的案例是Scala代码,我在这里问。

我在单元测试中有一个包含非ASCII字符的字符串。这个测试在Linux上工作正常,在从IntelliJ运行时在Windows上运行良好。但是,从具有sbt test的Windows shell运行时,它们会失败。如果我打印字符串humanité,则在失败的情况下显示为humanitΘ。文件编码为UTF-8。

从IntelliJ运行时,

println(new java.io.InputStreamReader(System.in).getEncoding)会返回UTF8,而来自shell的Cp1252会返回sbt "-Dfile.encoding=UTF-8" test。我尝试了各种改变编码的方法:

  • 运行Cp1252
  • 检查我的build.sbt中定义的scalacOptions是否包含“-encoding”,“UTF8”

但是默认编码总是val stringToEncrypt = "l'humanité" println(test) (也许这是正常的?)并且测试仍然失败。

失败的代码如下:

l'humanité

从IntelliJ我得到:

l'humanitΘ

从运行sbt的Windows shell开始:

groupBy

1 个答案:

答案 0 :(得分:0)

为了避免OS的默认字符集出现问题,您可以在创建InputStream时明确传递所需的字符集:

new java.io.InputStreamReader(System.in,"UTF-8")