Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java sbt测试编码hickup_Java_Sbt_Specs2 - Fatal编程技术网

Java sbt测试编码hickup

Java sbt测试编码hickup,java,sbt,specs2,Java,Sbt,Specs2,我正在为使用地理坐标的工作编写一个Java库,测试是用Scala中的specs2实现的。我有很多测试,可以将字符串与包含度符号°(非ASCII字符)的字符串进行比较 如果我从IntelliJ内部运行这些测试,它们都会通过。他们也传给特拉维斯·西。但是,如果我从我的Power Shell(Windows x64)运行sbt test(sbt 11.3),所有这些测试都会失败,控制台会显示格式错误的字符串,如屏幕截图所示: 可能是什么问题,我如何解决?我检查了文件是否是UTF8编码的。还要注意,更

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

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


可能是什么问题,我如何解决?我检查了文件是否是UTF8编码的。还要注意,更改Java配置不会有多大帮助,因为如果其他人克隆了存储库,测试就必须运行(因此,任何只在我的系统上解决问题的解决方案都不会有帮助)。但是我完全不知道这里出了什么问题……

你的学位符号是直接在源文件中编码的吗

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

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

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

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


通过谷歌,我还找到了一些关于如何在系统范围内实现这一点的信息(我没有测试过)。

您看到的S33让我想到了颜色的ASCII编码。如果使用“nocolor”运行会发生什么情况:“仅sbt测试--nocolor”
nocolor
不会更改此行为。但更奇怪的是:如果我运行
sbt测试(失败),然后在IntelliJ内部运行测试,测试也会失败
sbt clean
->IntelliJ,一切又恢复正常了。所以这似乎与编译有关?!您的学位符号是否直接编码在源文件中?如果是这样,我怀疑您可能有一些编码问题(可能是源文件在IntelliJ和CP1252中被SBT编译时被解释为UTF-8)。尝试将度符号更改为“\u00B0”并重新编译。或者,您可以尝试使用
javacOptions++=Seq(“-encoding”,“UTF-8”)
在SBT中设置源文件编码。添加
javacOptions
解决了这个问题!我认为Java是一个纯粹的UTF-8世界。。。请添加一个答案,以便我可以接受!