Java:读取/写入保存在Excel中的UTF-8.csv文件时出现问题



我正在开发一个Java应用程序,该应用程序接受来自用户的.csv文件,然后将它们读写到服务器上的临时文件夹中以进行一些处理。以下是我的一些IO代码:

br = new BufferedReader(new InputStreamReader(in));
out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file)));
String str;
while ((str = br.readLine()) != null) {
out.write(str);
out.newLine();
}
out.flush();

在这里调试并在Excel中查看输出文件时,它看起来与我预期的完全一样。假设用户输入csv文件,其中第一个单元格的值为"0";Foo";(无特殊字符(;所有这些似乎都显示在Excel和调试器中。但稍后,我将使用value.contains("Foo")解析输出文件中的该值。只有当csv文件以csv UTF-8格式保存在Excel中时,这才返回false,即使根据Excel和调试器的值为"0";Foo";。

为什么会发生这种情况?

问题可能是当您稍后读取该文件时,您必须在"UTF-8";类似的编码

InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);

最新更新