导出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”)中指定具体的编码,后面打包放服务器上测试就正常了。
