sbt测试编码打嗝

时间:2012-10-03 15:53:40

标签: java sbt specs2

我正在编写一个用于地理坐标工作的Java库,测试是使用Scala中的specs2实现的。我有许多测试对包含度符号°(非ASCII字符)的字符串进行字符串比较。

如果我从IntelliJ中运行这些测试,它们都会通过。他们也传递了特拉维斯CI。但是如果我从我的Power Shell(Windows x64)运行sbt test(sbt 11.3),所有这些测试都会失败,并且控制台会显示格式错误的字符串,如屏幕截图所示:

encoding problems

可能是什么问题,我该如何解决?我检查了文件是UTF8编码的。另请注意,更改我的Java配置无济于事,因为如果其他人克隆了存储库,则必须运行测试(因此任何仅在我的系统上解决问题的解决方案都无济于事)。但我完全不知道这里出了什么问题......

1 个答案:

答案 0 :(得分:6)

您的学位符号是否直接在源文件中编码?

如果是这样,我怀疑你可能有一些编码问题(在SBT编译时,源文件可能被解释为IntelliJ和CP1252中的UTF-8)。

您可以尝试将度数符号更改为'\u00B0'并重新编译,或者您也可以尝试使用javacOptions ++= Seq("-encoding", "UTF-8")在SBT中设置源文件编码。

FWIW,编译器(和运行时)使用源(和其他)文件I / O的默认编码,除非另有说明。 Windows的默认编码是CP1252。

您可以告诉javac编译器使用带有-encoding UTF-8选项的替代编码,使用带有-Dfile.encoding=UTF-8的运行时。

通过Google,我还在系统范围内找到了一些有关如何执行此操作的信息here(未经我测试)。

相关问题