使用 SpringMVC 接受前端 JSP 页面传来的中文出现了乱码。
首先保证项目的编码为 UTF-8。
在项目中的 web.xml 配置过滤器,进行编码拦截:
<filter>
<filter-name>charset</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charset</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在 JSP 的显示视图中用 utf-8:
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="utf-8" language="java" %>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...
</head>
...
</html>
在负责运行项目的 tomcat 的 server.xml 文件中的端口位置加上编码 utf-8:
<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
又或者,如果是在 IDEA 使用了 maven 的 tomcat 插件来运行项目,则作如下修改:
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<uriEncoding>UTF-8</uriEncoding>
<port>8002</port>
<path>/</path>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
最后运行代码,可以发现中文乱码问题已被解决。
想了解更多,欢迎关注我的微信公众号:Renda_Zhang