CSV转换无法识别特殊字符

时间:2013-10-28 17:35:27

标签: java eclipse csv

这是问题所在。我有一个将XML转换为CSV的java程序。我的xml中的一个元素标记如下所示。

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

我的解析器能够正确解析它。但转换后,当我将其写入csv文件并在mcsft excel中打开时,我将"Greg kaménez"视为单元格值,而不是Gregkamé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();

2 个答案:

答案 0 :(得分:2)

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

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(csvFile), "Windows-1252"));

答案 1 :(得分:1)

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

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

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