2013-10-28 42 views
1

这是问题所在。我有一个Java程序,将XML转换为CSV。下面显示了我的xml中的一个元素标记。CSV转换无法识别特殊字符

<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(); 
+0

向我们展示的代码 – tom

+0

我怀疑这是同一个问题的重音'e'在两个字符,其中一个修改第二被编码。因为这是特定顺序的,所以当某些应用程序不按顺序处理这些字符时,它将创建乱码而不是正确带重音的字符。 (我们需要查看代码来确切解决问题。) – BlackVegetable

+0

将这两个文件的编码设置为utf – itsraja

回答

1

CSV文件都没有办法指定字符编码,你已经习惯了他们写的,所以喜欢的文本编辑器和Excel程序读取时必须尝试猜测编码,或使用系统默认值。

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

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

+0

感谢您的回复。不幸的是,我想以编程方式实现而不是手动。 – Ashish

2

Excel默认使用Windows-1252。所以,如果你想读您的CSV在Excel中,使用

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