基本定为出是什么了,不过暂时还是没找到能够友好解决问题对方式。
问题原因:
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();
试下看free spire.xls for java导出效果呢
出现问题的是公司的一个老项目,涉及的方面比较广。如果替换工具包再实现代价有点大。
最好能在现有的实现基础上增加配置或者判断能解决。
基本定为出是什么了,不过暂时还是没找到能够友好解决问题对方式。
问题原因:
pio 本身会对字符串对值进行封装成RIchTextString富文本类,而在插入数据对时候富文本类
会对原字符串中符合 ‘x([0-9AF]{4})’ 规则对字符串进行编码转换,最终生成一些特殊符号,
而导出对文件呈现乱码估计是由于本地字体库不支持这种符号编码导致的吧。
虽然问题基本是定位了,但是没有找到能有什么方式令用户无感知对问题进行解决。
当前只想到了两种方式:
一是新版本中对需要导出对字符串字段加上新的校验,但是没办法解决老版本中含对可能导致异常对值。
二是导出时,在赋值前对字符串进行判断,如果有符合规则的字符串就对这部分字符对‘x’进行大写转换,从而规避富文本转码这一步操作。 但是导出的数据和库数据是不一致对,显得不友好。
先看乱码文件 改下字符集 能否恢复正常
找到具体原因后 再改代码