You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Java生成的CSV在Excel中阿拉伯文乱码,Notepad++显示正常

解决Excel打开UTF-8 CSV时阿拉伯文乱码问题

问题根源在于Excel对无BOM(字节顺序标记)的UTF-8 CSV文件解析支持不佳。Notepad++可以自动识别无BOM的UTF-8编码,但Excel需要通过BOM来确认文件采用UTF-8编码,否则会用系统默认编码(通常是GBK或其他非UTF-8编码)解析,导致阿拉伯文等非ASCII字符显示乱码。

解决方案:给UTF-8 CSV添加BOM标记

修改代码,在写入内容前先写入UTF-8 BOM,具体有两种实现方式:

方式一:通过FileOutputStream直接写入BOM字节

FileOutputStream fos = new FileOutputStream("C:\\Users\\Desktop\\file456789.csv");
// 写入UTF-8 BOM的三个字节
fos.write(0xEF);
fos.write(0xBB);
fos.write(0xBF);

CSVWriter writer234 = new CSVWriter(new OutputStreamWriter(fos, StandardCharsets.UTF_8));

String[] header = { "Field1", "Field2", "Field3", "Field4", "Field5", "Field6", "Field7", "Field8" };
writer234.writeNext(header);

String[] data = { "مرحبا", "Field2", "Field3", "Field4", "Field5", "Field6", "Field7", "Field8" };
writer234.writeNext(data);

writer234.close();

方式二:通过Writer写入BOM字符

CSVWriter writer234 = new CSVWriter(new OutputStreamWriter(new FileOutputStream("C:\\Users\\Desktop\\file456789.csv"), StandardCharsets.UTF_8));
// 写入UTF-8 BOM字符
writer234.write("\uFEFF");

String[] header = { "Field1", "Field2", "Field3", "Field4", "Field5", "Field6", "Field7", "Field8" };
writer234.writeNext(header);

String[] data = { "مرحبا", "Field2", "Field3", "Field4", "Field5", "Field6", "Field7", "Field8" };
writer234.writeNext(data);

writer234.close();

额外注意

原代码中的文件路径"C:\Users\Desktop\file456789.csv"存在语法错误,Java字符串中的反斜杠需要转义为双反斜杠"C:\\Users\\Desktop\\file456789.csv",否则会导致编译失败。

内容的提问来源于stack exchange,提问作者user3586286

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 16:15:13