导出excel 报 Invalid UTF-8 middle byte 0xb9 问题
今天做了一个简单的excel导出问题,文件名字以及各列的信息在前端封装,传到后台自动下载。 测试环境没发现什么问题,我就打war包,放服务器上进行测试,发现所有导出都是报404错误, 就去看服务器控制台。发现报以下错误: could not read document Invalid UTF-8 middle byte 0xb9 这个一看是编码问题,所以我去看下tomcat的配置,因为前段时间因为tomcat的漏洞而去下载了最新版,以为要配置编码,在Tomcat /Bin 文件中 编辑catalina.bat 文件。增加 一行:set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8,发现没什么用。后面只能了,找到过滤器中有一个操作是从POST请求的流中获取到请求json,然后设置一个新的流返回,这样后面的controller才能获取到RequestBody。
@Override public ServletInputStream getInputStream() throws IOException { final ByteArrayInputStream bais = new ByteArrayInputStream(inputHandlers(super.getInputStream ()).getBytes ("UTF-8")); return new ServletInputStream() { @Override public int read() throws IOException { return bais.read(); } @Override public boolean isFinished() { return false; } @Override public boolean isReady() { return false; } @Override public void setReadListener(ReadListener readListener) { } }; }
在getInputStream ()).getBytes (“UTF-8”)中指定具体的编码,后面打包放服务器上测试就正常了。