我已經寫了單元測試,如果有任何編碼問題與德國字母控制(ä,ö,SS等)比較兩個字符串是否在Windows上運行,但無法在Linux上
@Test
public void testBodyWithDefaultCharset() throws UnsupportedEncodingException {
when(backendDefinition.getProperty(BackendDetailsEnum.MAIL_CHARSET.getName())).thenReturn(null);
Charset defaultCharset = Charset.defaultCharset();
when(packet.getPayload()).thenReturn(defaultCharset.encode("ÄÖÜäöüß").array());
final String mailText = classUnderTest.prepareMailText(backendDefinition, packet);
assertThat(mailText, is(equalTo("ÄÖÜäöüß")));
}
這個測試在Windows PC傳遞,但在jenkins,這是一個Linux環境失敗。錯誤信息如下:
Expected: is "ÄÖÜäöüß"
but: was "???????"
我的問題是,這是錯誤的mailText與 「ÄÖÜäöüß」 比較?我想我比較兩個字符串時不需要說明任何編碼。
'Charset.defaultCharset()'聽起來很可疑。你能夠選擇UTF-8嗎? – Ryan
默認字符集可能會在unix和windows之間有所不同,我期望windows是'ISO-1250(Windows)',但我不知道哪一個期望在unix上......你可以試試UTF-8嗎? – Shark
您的兩個環境中的默認字符集可能不一樣,因此會有不同的結果。 –