2012-10-03 2 views
3

저는 지리 좌표가있는 작업을위한 Java 라이브러리를 작성 중이며 테스트는 스칼라에서 specs2로 구현됩니다. 학위 기호 ° (비 ASCII 문자 임)이 포함 된 String에 대한 문자열 비교를 수행하는 많은 테스트가 있습니다.sbt 테스트 인코딩 hickup

IntelliJ 내에서이 테스트를 실행하면 모두 통과합니다. 그들은 또한 Travis CI를 통과합니다. ,

encoding problems

문제가 될 수 무엇 : 내 파워 쉘 (Windows의 x 64)에서 (11.3 SBT) sbt test를 실행한다면, 모든 테스트가 실패하고 콘솔은 스크린 샷과 같은 잘못된 문자열을 보여줍니다 어떻게 해결할 수 있습니까? 파일이 UTF8로 인코딩되었는지 확인했습니다. 또한 다른 사람이 리포지토리를 복제하면 테스트가 실행되기 때문에 Java 구성을 변경하면 도움이되지 않습니다. 따라서 내 시스템에서만 문제를 해결하는 솔루션이 도움이되지 않습니다. 하지만 여기에 무엇이 잘못되고 있는지 전혀 알지 못합니다 ...

+0

S33을 보면 색상의 ASCII 인코딩을 생각할 수 있습니다. 'nocolor': "sbt test-only - nocolor"로 실행하면 어떻게됩니까? – Eric

+0

'nocolor'은이 동작을 변경하지 않습니다. 하지만 그것은 낯선 것입니다 : 만약 내가'sbt test' (실패)를 실행하고, IntelliJ 내부에서 테스트를 실행한다면, 그 테스트 또한 실패합니다. 'sbt clean' -> IntelliJ, 그리고 모든 것이 다시 괜찮습니다. 그래서 이것은 컴파일과 관련이있는 것 같습니다. – Leo

+0

학위 기호가 소스 파일에 직접 인코딩되어 있습니까? 그렇다면 일부 인코딩 문제가있을 수 있습니다 (아마도 소스 파일은 IntelliJ 및 CP1252에서 UTF-8로 해석 될 것입니다). 학위 기호를 '\ u00B0'로 변경하고 다시 컴파일 해보십시오. 또는 javacOptions ++ = Seq ("- encoding", "UTF-8")'로 SBT에서 소스 파일 인코딩을 설정할 수도 있습니다. – msandiford

답변

6

학위 기호가 소스 파일에 직접 인코딩되어 있습니까?

그렇다면 일부 인코딩 문제가있을 수 있습니다 (소스 파일이 SBT로 컴파일 될 때 IntelliJ 및 CP1252에서 UTF-8로 해석 될 수 있음).

도 기호를 '\u00B0'으로 변경하고 다시 컴파일 해보십시오. 또는 SBT의 소스 파일 인코딩을 javacOptions ++= Seq("-encoding", "UTF-8")으로 설정할 수도 있습니다.

FWIW 컴파일러 (및 런타임)는 달리 언급되지 않는 한 소스 (및 기타) 파일 I/O에 대한 기본 인코딩을 사용합니다. Windows의 기본 인코딩은 CP1252입니다.

-encoding UTF-8 옵션을 사용하고 런타임을 -Dfile.encoding=UTF-8으로 대체 인코딩을 사용하도록 javac 컴파일러에 알릴 수 있습니다.

Google을 통해 시스템 전체 기준 here (내게 테스트 됨)에서이를 수행하는 방법에 대한 정보도 발견했습니다.