bom csv java_如何在java中添加UTF-8 BOM

I have a Java stored procedure which fetches record from the table using Resultset object and creates a csv file.

BLOB retBLOB = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);

retBLOB.open(BLOB.MODE_READWRITE);

OutputStream bOut = retBLOB.setBinaryStream(0L);

ZipOutputStream zipOut = new ZipOutputStream(bOut);

PrintStream out = new PrintStream(zipOut,false,"UTF-8");

out.write('\ufeff');

out.flush();

zipOut.putNextEntry(new ZipEntry("filename.csv"));

while (rs.next()){

out.print("\"" + rs.getString(i) + "\"");

out.print(",");

}

out.flush();

zipOut.closeEntry();

zipOut.close();

retBLOB.close();

return retBLOB;

But the generated csv file doesn't show the correct german character. Oracle database also has a NLS_CHARACTERSET value of UTF8.

Please suggest.

解决方案

To write a BOM in UTF-8 you need PrintStream.print(), not PrintStream.write().

Also if you want to have BOM in your csv file, I guess you need to print a BOM after putNextEntry().

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值