【问题标题】:Java: Problems reading/writing UTF-8 .csv file saved in ExcelJava:读取/写入保存在 Excel 中的 UTF-8 .csv 文件时出现问题
【发布时间】:2020-12-08 16:35:37
【问题描述】:

我正在开发一个 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 文件,其中第一个单元格的值为“Foo”(无特殊字符);这一切似乎都出现在 Excel 和调试器中。但稍后,我将使用value.contains("Foo") 解析该值的输出文件。仅当 csv 文件在 Excel 中以 csv UTF-8 格式保存时才返回 false,即使根据 Excel 并且调试器值的值为“Foo”。

为什么会这样?

【问题讨论】:

  • InputStreamReaderOutputStreamWriter 最好使用明确的 StandardCharsets.UTF_8Charset.defaultCharset()(这是默认值)创建。 out.write("\uFEFF"); 在循环之前可能有助于识别 UTF-8。

标签: java excel csv encoding vaadin


【解决方案1】:

问题可能是当您稍后读取文件时,您必须以“UTF-8”编码方式读取它

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

【讨论】:

    猜你喜欢
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多