Tomcat7和Tomcat8出现以下问题
详细错误信息:
o.s.w.s.m.s.DefaultHandlerExceptionResolver - [logException,207] - Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Invalid UTF-8 start byte 0xbd; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid UTF-8 start byte 0xbd
at [Source: (PushbackInputStream); line: 1, column: 13] (through reference chain: com.wto.tb.onlineask.OnlineAsk["qtitle"])]
问题场景:
本地idea开发环境没有问题,部署到外置tomcat之后,带中文的post请求报400错误
问题分析:
与代码没有关系,跟运行环境差异有关
纯英文提交没有问题,中文报错,说明跟编码格式有关
解决问题验证:
首先在tomcat下conf的server.xml中,在Connector 标签中添加编码属性:URIEncoding="UTF-8"(见下图)
添加完成之后,Tomcat9解决问题,但是Tomcat7和Tomcat8没有解决问题
然后在tomcat下bin的catalina.bat 中,set JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF-8(见下图)
重启tomcat,Tomcat7和Tomcat8完美解决问题。