java.nio.charset.MalformedInputException:输入长度=1
java.nio.charset.MalformedInputException: Input length = 1
我有这个(剥离了代码示例的 HTML 标签)从 CSV 构建 HTML table 的函数,但我得到了 运行每次我尝试 运行 时都会出现时间错误,但我不知道为什么。 Google 说编码可能有问题,但我不知道如何更改它。
我的 CSV 是用 ANSI 编码的,包含 ä、Ä、Ü、Ö 等字符,但我无法控制编码,也无法控制它是否会在未来发生变化。
这里出现错误:
Caused by: java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
at java.io.BufferedReader.hasNext(Unknown Source)
at java.util.Iterator.forEachRemaining(Unknown Source)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
at testgui.Csv2Html.start(Csv2Html.java:121)
第 121 行是
lines.forEach(line -> {
源代码:
protected void start() throws Exception {
Path path = Paths.get(inputFile);
FileOutputStream fos = new FileOutputStream(outputFile, true);
PrintStream ps = new PrintStream(fos);
boolean withTableHeader = (inputFile.length() != 0);
try {
Stream<String> lines = Files.lines(path);
lines.forEach(line -> {
try {
String[] columns = line.split(";");
for (int i=0; i<columns.length; i++) {
columns[i] = escapeHTMLChars(columns[i]);
}
if (withTableHeader == true && firstLine == true) {
tableHeader(ps, columns);
firstLine = false;
} else {
tableRow(ps, columns);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
});
} finally {
ps.close();
}
}
您可以尝试使用 Files.lines(Path path, Charset charset)
形式的 lines
方法 (javadocs) 来使用正确的编码。
Here's a list of supported encodings (for the Oracle JVM anyhow). This post表示"Cp1252"是WindowsANSI。
我有这个(剥离了代码示例的 HTML 标签)从 CSV 构建 HTML table 的函数,但我得到了 运行每次我尝试 运行 时都会出现时间错误,但我不知道为什么。 Google 说编码可能有问题,但我不知道如何更改它。
我的 CSV 是用 ANSI 编码的,包含 ä、Ä、Ü、Ö 等字符,但我无法控制编码,也无法控制它是否会在未来发生变化。
这里出现错误:
Caused by: java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1
at java.io.BufferedReader.hasNext(Unknown Source)
at java.util.Iterator.forEachRemaining(Unknown Source)
at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
at testgui.Csv2Html.start(Csv2Html.java:121)
第 121 行是
lines.forEach(line -> {
源代码:
protected void start() throws Exception {
Path path = Paths.get(inputFile);
FileOutputStream fos = new FileOutputStream(outputFile, true);
PrintStream ps = new PrintStream(fos);
boolean withTableHeader = (inputFile.length() != 0);
try {
Stream<String> lines = Files.lines(path);
lines.forEach(line -> {
try {
String[] columns = line.split(";");
for (int i=0; i<columns.length; i++) {
columns[i] = escapeHTMLChars(columns[i]);
}
if (withTableHeader == true && firstLine == true) {
tableHeader(ps, columns);
firstLine = false;
} else {
tableRow(ps, columns);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
}
});
} finally {
ps.close();
}
}
您可以尝试使用 Files.lines(Path path, Charset charset)
形式的 lines
方法 (javadocs) 来使用正确的编码。
Here's a list of supported encodings (for the Oracle JVM anyhow). This post表示"Cp1252"是WindowsANSI。