我通过Java创建了包含数据的CSV文件。但是我遇到了以下众所周知的问题:在Excel中(双击打开)用葡萄牙语书写的字母以错误的方式显示。
我通过使用UTF-16LE + BOM解决了这个问题,但Excel开始将制表符识别为列分隔符而不是逗号。
因此,我寻找了另一种解决方案,并看到许多帖子中,人们说只需添加UTF-8 BOM并使用UTF-8编写文件即可为Excel 2007及更高版本完成任务。我在我的工作电脑上尝试了最简单的示例,但失败了。但是当我在家里的电脑上尝试时,它运行得非常好。
两台计算机都安装有相同版本的Java和操作系统Windows 7。我很困惑。有人能告诉我是什么原因导致了这种奇怪的行为吗?
您可以在下面看到我的最简单示例:
我通过使用UTF-16LE + BOM解决了这个问题,但Excel开始将制表符识别为列分隔符而不是逗号。
因此,我寻找了另一种解决方案,并看到许多帖子中,人们说只需添加UTF-8 BOM并使用UTF-8编写文件即可为Excel 2007及更高版本完成任务。我在我的工作电脑上尝试了最简单的示例,但失败了。但是当我在家里的电脑上尝试时,它运行得非常好。
两台计算机都安装有相同版本的Java和操作系统Windows 7。我很困惑。有人能告诉我是什么原因导致了这种奇怪的行为吗?
您可以在下面看到我的最简单示例:
String filename = "D:/check/test_with_bom.csv";
FileOutputStream fos = new FileOutputStream(filename);
byte[] bom = new byte[] { (byte)0xEF, (byte)0xBB, (byte)0xBF };
fos.write(bom);
OutputStreamWriter osw = new OutputStreamWriter(fos , "UTF-8");
PrintWriter printWriter = new PrintWriter(osw);
printWriter.print("Hello,Olá,ão,ção");
printWriter.close();
PrintWriter
?难道在Writer
上调用write
比在PrintWriter
上调用print
更困难吗? - Holger