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

经验分享 程序员 微信小程序 职场和发展