前端中使用form表单以post方式发送含有中文的数据会出现乱码问题
前言
使用SpringMVC测试功能的时候发现前端jsp中使用form表单提交数据传到后端的时候,中文已经乱码。
原因
在传输过程中由于解码和编码不统一,所以导致中文在解码的时候解析不到正确的数据。
解决方案
只需要在web.xml文件中加入:
<filter>
<filter-name>encodingFilter</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>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
即可解决问题。
前端代码
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>输入用户信息</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/students/verifyInfo" method="post" accept-charset="UTF-8">
<h3>学生信息录入</h3>
<p>学号:
<label>
<input type="text" name="id">
</label>
</p>
<p>姓名:
<label>
<input type="text" name="username">
</label>
</p>
<p>年龄:
<label>
<input type="text" name="age">
</label>
</p>
<p>生日:
<label>
<input type="text" name="birthDay">
</label>
</p>
<p>性别:
<label>
<input type="text" name="sex">
</label>
</p>
<p>
<input type="submit" value="提交">
<input type="reset" value="重置">
</p>
</form>
</body>
</html>