解决Tomcat中文乱码问题
多种情况可以逐一去排查
1、首先,可以确定是出现乱码和前端没有关系
html已经设置了<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
js引用也已加上 charset="utf-8", 没有的话都要加上。
2、其次,修改tomcat中的conf/server.xml,在8080端口设置URIEncoding="utf-8",如下:
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
3、再次,修改tomcat中的bin/catalina.bat,增加一行
set “JAVA_OPTS=%JAVA_OPTS% %LOGGING_CONFIG% -Dfile.encoding=UTF-8”
4、最后,修改conf/web.xml,在<servlet>标签中 增加fileEncoding,如下:
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>0</param-value> </init-param> <!-- 增加内容 start --> <init-param> <param-name>fileEncoding</param-name> <param-value>UTF-8</param-value> </init-param> <!-- 增加内容 end --> <init-param> <param-name>listings</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
5.tomcat高版本严格按照RFC 3986规范解析地址。该规范只允许包含 a-zA-Z 0-9 - _ . ~ 以及所有保留字符 ! * ’ ( ) ; : @ & = + $ , / ? # [ ]
但是项目在发起请求的参数中出现{},所以需要配置一下
relaxedPathChars="|{}[],%" relaxedQueryChars="|{}[],%"