繁体   English   中英

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

[英]opencsv CSVWriter using utf-8 doesn't seem to work for multiple languages

我使用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”。 有什么想法吗?

我想您的文件具有“没有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是专门添加此签名的,以及如何阻止它签名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM