2

这是问题所在。我有一个将一个转换XMLCSV. 我的 xml 中的元素标记之一如下所示。

<person-name>Greg kaménez</person-name>.

我的解析器能够正确解析它。但是在转换之后,当我将它写入 csv 文件并在 mcsft excel 中打开它时,我看到"Greg kaménez"的是一个单元格值而不是 Greg kaménez。

我还注意到,当我在 Eclipse IDE 中的文本编辑器中打开相同的 csv 文件时,它会正确显示名称“ Greg kaménez”。

这是我将字符串写入csv的片段:

    String csv = ""x","y","Greg kaménez","z"";
    String fileName = "output.csv";
    File csvFile = new File(fileName);
    String jobId = null;
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "UTF-8"));
    writer.append(csv);
    writer.close();
4

2 回答 2

4

Excel 默认使用 Windows-1252。因此,如果您想在 Excel 中读取 CSV,请使用

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "Windows-1252"));
于 2014-04-30T19:14:09.800 回答
1

CSV文件无法指定您使用哪种字符编码来编写它们,因此文本编辑器和 Excel 等程序在读取时必须尝试猜测编码,或者使用系统默认值。

如果文本编辑器能够正确显示字符,则可能您所做的一切都是正确的,但 Excel 没有正确猜测字符编码。

当您在 Excel 中导入文件时,它会要求您指定原始编码。选择正确的值,您应该能够正确读取文件。

于 2013-10-28T17:54:40.407 回答