我在使用 opencsv 时遇到了一个非常烦人的编码问题。 当我导出 csv 文件时,我将字符类型设置为“UTF-8”。
CSVWriter writer = new CSVWriter(new OutputStreamWriter("D:/test.csv", "UTF-8"));
但是当我用 Microsoft Office Excel 2007 打开 csv 文件时,结果发现它有 'UTF-8 BOM' 编码?
在记事本中保存文件并重新打开后,文件变回 UTF-8,并且其中的所有字母都显示正常。 我想我搜索得够多了,但我还没有找到任何解决方案来防止我的文件变成“UTF-8 BOM”。有什么想法吗?
最佳答案
我想您的文件使用“UTF-8 without BOM”编码。 您最好将 BOM 编码提供给您的文件,尽管在大多数情况下这不是必需的,但只有一个明显的异常(exception)是当您处理 ms excel 时。
FileOutputStream os = new FileOutputStream(file);
os.write(0xef);
os.write(0xbb);
os.write(0xbf);
CSVWriter csvWrite = new CSVWriter(new OutputStreamWriter(os));
现在您的文件将被 excel 理解为 utf-8 csv。
关于java - 使用 utf-8 的 opencsv CSVWriter 似乎不适用于多种语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136343/