JAVA输出带BOM的UTF-8编码的文件

本文介绍了在JAVA中如何生成带BOM的UTF-8编码CSV文件,以便在Windows环境下使用Excel正确识别。通过在HTTP响应中设置Content-Type和CharacterEncoding,并在输出流前添加BOM字节,可以确保文件以UTF-8带BOM格式保存。BOM在UTF-8编码中的作用是帮助识别文件编码,避免乱码情况。虽然UTF-8的BOM在网页中并不推荐使用,但在某些场景下对于文件识别是必要的。
摘要由CSDN通过智能技术生成
当从http 的response输出CSV文件的时候,设置为utf8的时候默认是不带
bom的,但是windows的Excel是使用bom来确认utf8编码的,所有需要把bom写到文件的开头。
微软在 UTF-8 中使用 BOM 是因为这样可以把 UTF-8 和 ASCII 等编码明确区分开。
否则用Excel打开CSV文件有可能是乱码的
示例代码如下:
response.setContentType("text/csv");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
response.setCharacterEncoding("UTF-8");
byte[] uft8bom={(byte)0xef,(byte)0xbb,(byte)0xbf};
OutputStream out = response.getOutputStream();
out.write(uft8bom);

OutputStreamWriter writer = new OutputStreamWriter(out,"UTF-8");

//write other content ...

什么是BOM:
BOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型。对于UTF-8来说,BOM并不是必须的,因为BOM是用来标记多字节编码文件的编码类型和字节顺序(big-endian或little- endian)。而UTF8中,每个字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值