使用utf-8的opencsv CSVWriter似乎不适用于多种语言

use*_*162 11 java unicode utf-8 opencsv

我使用opencsv有一个非常烦人的编码问题.当我导出csv文件时,我将字符类型设置为'UTF-8'.

CSVWriter writer = new CSVWriter(new OutputStreamWriter("D:/test.csv", "UTF-8"));
Run Code Online (Sandbox Code Playgroud)

但是当我用Microsoft Office Excel 2007打开csv文件时,它发现它有'UTF-8 BOM'编码?

一旦我将文件保存在记事本中并重新打开,文件将返回UTF-8并且其中的所有字母都显示正常.我想我已经搜索得足够多了,但我没有找到任何解决方案来防止我的文件变成'UTF-8 BOM'.有什么想法吗?

goo*_*yun 18

我想你的文件有'UTF-8无BOM'编码.您最好将BOM编码提供给您的文件,即使在大多数情况下不需要,但只有一个明显的例外是当您处理ms excel时.

FileOutputStream os = new FileOutputStream(file);
os.write(0xef);
os.write(0xbb);
os.write(0xbf);
CSVWriter csvWrite = new CSVWriter(new OutputStreamWriter(os));
Run Code Online (Sandbox Code Playgroud)

现在你的文件将被excel理解为utf-8 csv.