【发布时间】:2013-11-07 14:43:10
【问题描述】:
这就是问题所在。我有一个将XML 转换为CSV 的java 程序。我的 xml 中的元素标记之一如下所示。
<person-name>Greg kaménez</person-name>.
我的解析器能够正确解析它。但是在转换之后,当我将它写入 csv 文件并在 mcsft excel 中打开它时,我看到 "Greg kaménez" 作为单元格值而不是 Greg kaménez。
我还注意到,当我在 Eclipse IDE 的文本编辑器中打开同一个 csv 文件时,它会正确显示名称“Greg kaménez”。
这是我将字符串写入 csv 的 sn-p:
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();
【问题讨论】:
-
我怀疑这是重音符号
e被编码为两个字符的问题,其中一个字符修改了第二个字符。因为这是特定于顺序的,所以当某些应用程序无序处理这些字符时,它会产生乱码而不是正确重音的字符。 (不过,我们需要查看代码才能准确排除正在发生的事情。) -
设置两个文件的编码为utf
-
感谢您的回复我尝试将两个文件的编码设置为 UTF-8,但效果很好。我认为弗拉维奥是对的,但他的回答也帮不了我。我的程序在 Eclipse 中生成 csv 文件,当我查找该文件的属性时,我看到 UTF-8 编码已被设置为默认值