导出excel内容乱码java_Springboot导出的Excel表格内容存在乱码。

问题表现:

表格那么含有名称列,名称一旦包含 “_x3850” ,最终到处的Excel表格中显示的名称就会包含乱码。比如名称为:“system_x3850_xo” 最终“_x3850”处显示的是乱码。

基本定为出是什么了,不过暂时还是没找到能够友好解决问题对方式。

问题原因:

pio 本身会对字符串对值进行封装成RIchTextString富文本类,而在插入数据对时候富文本类

会对原字符串中符合 ‘x([0-9AF]{4})’ 规则对字符串进行编码转换,最终生成一些特殊符号,

而导出对文件呈现乱码估计是由于本地字体库不支持这种符号编码导致的吧。

虽然问题基本是定位了,但是没有找到能有什么方式令用户无感知对问题进行解决。

当前只想到了两种方式:

一是新版本中对需要导出对字符串字段加上新的校验,但是没办法解决老版本中含对可能导致异常对值。

二是导出时,在赋值前对字符串进行判断,如果有符合规则的字符串就对这部分字符对‘x’进行大写转换,从而规避富文本转码这一步操作。 但是导出的数据和库数据是不一致对,显得不友好。

想问一下,有没有什么方式能很好地关闭poi对这个编码功能?

导出涉及的代码大致如下:

//生成excel,并将其打包到zip压缩包内生成目标压缩包 zipFile

// ...........

// 输出到客户端

OutputStream out = response.getOutputStream();

response.reset();

response.setHeader("Content-Disposition", "attachment;filename=" + new

String("TestName".getBytes(StandardCharsets.UTF_8),StandardCharsets.ISO_88591));

response.setContentType("application/octet-stream; charset=utf-8");

response.setCharacterEncoding("UTF-8");

out.write(FileUtils.readFileToByteArray(zipFile));

out.flush();

out.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值