手多将tomcat8换成tomcat9, 用eclipse调试时一切正常, 但发布出去发现乱码了, 经过远程调试发现正常的request.getParameter取回的内容不乱,但是用request.getReader()取回的就变怪码. 需要作如下修改:
1/修改tomcat9\conf\server.xml, 定位到Connector 这个session, 加上URIEncoding为"utf-8"
<Connector port="80"
protocol="org.apache.coyote.http11.Http11NioProtocol"
URIEncoding="UTF-8"
compression="on"
maxThreads="200"
minSpareThreads="10"
compressionMinSize="1024"
connectionTimeout="20000"
compressibleMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript "
redirectPort="8443" />
2/修改catalina.bat , 在开始指定file.encoding:
set "JAVA_OPTS=%JAVA_OPTS% %JSSE_OPTS% -Dfile.encoding=UTF-8 -server -Xms512m -Xmx2048m -XX:MetaspaceSize=512M -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=768m -Xss2m"
3/所有servlet/controller用到request/response时先调用 :
protected void setEncodingUtf8(HttpServletRequest request,
HttpServletResponse response) {
try {
request.setCharacterEncoding("UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setCharacterEncoding("UTF-8");
}