[英]Jenkins java.nio.charset.UnmappableCharacterException: Input length = 1
[英]Getting “java.nio.charset.UnmappableCharacterException: Input length = 1”
我在collect()方法調用(或toList()調用)上獲得UnmappableCharacterException:
private static void handleTransaction(Path a_filePath, String a_sTrasactionName, String a_sTransactionFilePath) {
// read file into stream, try-with-resources
try (Stream<String> stream = Files.lines(Paths.get(a_filePath.toString()), Charset.defaultCharset())) {
List<String> list =
stream.filter(line -> (line.indexOf(a_sTrasactionName) > 0))
.collect(Collectors.toList());
list.forEach(line -> {
System.out.println(line);
try (BufferedWriter writer = Files.newBufferedWriter(Paths.get(_FILES_PATH + a_sTransactionFilePath),Charset.defaultCharset(), StandardOpenOption.APPEND)) {
writer.write(line + "\n");
} catch (IOException e) {
e.printStackTrace();
}
});
} catch (IOException e1) {
e1.printStackTrace();
}
它對我有用,但從那時起從未如此。
我讀的文件是在solaris上創建的csv文件。 我在Windows 2012服務器上運行jar
你能告訴我嗎?
謝謝。
我讀的文件是在solaris上創建的csv文件。 我在Windows 2012服務器上運行jar
那么這可能是問題所在。 您正在使用platform-default編碼來讀取和寫入文件。 如果文件是在Solaris上創建的,那么很可能對Windows框具有不同的平台默認編碼。
如果您知道正在閱讀的文件的編碼,請指定該編碼。
如果你控制你正在閱讀和寫作的文件的編碼,我強烈建議使用UTF-8,除非你有充分的理由不這樣做。
如果您正在閱讀一個您知道使用平台默認編碼的文件,或者您正在編寫一個您肯定想要使用平台默認編碼的文件,請僅使用Charset.default()
- 並盡量避免使用后者。
(基本上,一切都以UTF-8編碼的世界是一個更簡單的世界...)
老實說,我甚至不確定這是否是答案,但我想提供幫助。 我有同樣的問題並使用:
val source = io.Source.fromFile("C:/mon_usatotaldat.csv").codec.decodingReplaceWith("UTF-8")
我得到了輸出:
來源:scala.io.Codec = windows-1252
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.