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



我在使用 opencsv 时遇到了一个非常烦人的编码问题。导出 csv 文件时,我将字符类型设置为"UTF-8"。

CSVWriter writer = new CSVWriter(new OutputStreamWriter("D:/test.csv", "UTF-8"));

但是当我使用 Office Excel 2007 打开 csv 文件时Microsoft结果它有"UTF-8 BOM"编码?

一旦我将文件保存在记事本中并重新打开,文件就会变回 UTF-8,并且其中的所有字母看起来都很好。我想我已经搜索了足够多,但我还没有找到任何解决方案来防止我的文件变成"UTF-8 BOM"。有什么想法吗?

我想你的文件有一个"没有BOM的UTF-8"编码。您最好将BOM编码输入到文件中,即使在大多数情况下不是必需的,但只有一个明显的例外是当您处理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。

UTF-8UTF-8 Signature(有时错误地命名为UTF-8 BOM)是相同的编码,签名仅用于将其与任何其他编码区分开来。任何 unicode 应用程序都应正确处理 UTF-8 签名(即三字节序列EF BB BF)。

为什么Java专门添加这个签名以及如何阻止它这样做我不知道。

相关内容

  • 没有找到相关文章

最新更新