我正在爲使用地理座標的工作編寫Java庫,並且使用Scala中的specs2來實現測試。我有很多測試對字符串進行比較,字符串包括學位符號°
(這是一個非ASCII字符)。sbt測試編碼hickup
如果我從IntelliJ內部運行這些測試,它們都會通過。他們也傳遞了特拉維斯CI。但是,如果我從我的電源外殼(視窗64)運行sbt test
(SBT 11.3),所有這些測試失敗,控制檯顯示的屏幕截圖所示畸形字符串,如:
可能是什麼問題,我該如何解決它?我檢查了這些文件是UTF8編碼的。另外請注意,更改我的Java配置沒有多大幫助,因爲如果其他人克隆了存儲庫,測試只需運行(因此任何解決方案僅在我的系統上解決問題都無濟於事)。但我絕對不知道這裏出了什麼問題......
你看到的S33讓我想到了ASCII編碼的顏色。如果使用'nocolor'運行會發生什麼情況:「sbt test-only - nocolor」? – Eric
'nocolor'不會改變這種行爲。但它變得更加奇怪:如果我運行'sbt test'(失敗),然後在IntelliJ中運行測試,那麼測試也會失敗。 'sbt clean' - > IntelliJ,一切都很好。所以這似乎是一種編譯相關?! – Leo
您的學位符號是否直接在源文件中編碼?如果是這樣,我懷疑你可能有一些編碼問題(可能源文件在被SBT編譯時被解釋爲IntelliJ和CP1252中的UTF-8)。嘗試將度數符號更改爲'\ u00B0'並重新編譯。或者,您可以嘗試使用'javacOptions ++ = Seq(「 - encoding」,「UTF-8」)在SBT中設置源文件編碼。 – msandiford