[英]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-8
和UTF-8 Signature
(有时错误地称为UTF-8 BOM
)是相同的编码,并且签名仅用于将其与任何其他编码区分开 。 任何Unicode应用程序都应正确处理UTF-8签名(三个字节序列EF BB BF
)。
我不知道为什么Java是专门添加此签名的,以及如何阻止它签名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.