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

标签 java unicode utf-8 opencsv

我在使用 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/

相关文章:

Windows 和 Linux 下将 UTF-16 转换为 UTF-8,用 C 语言

java - 收缩库代码

java - UTF-8 编码不适用于 Eclipse Java 应用程序

java - 如何在JPanel内部绘画

c++ - 将字符串转换为 wstring [没有 locale::global 的俄罗斯符号]

r - ggplot : some Unicode shapes working while others do not

unicode - 好的,我已经阅读了所有 unicode/mako 帖子,但我仍然可以使用这个简单的代码

Python编码问题(Utf-8,匈牙利语)

java - 使用 java.util.Timer 后程序不会终止

java - 更改数据表选择上的输入文本 JSF 2.2/Primefaces