【Tomcat】
Get 发送请求时浏览器没有任何的编码,请求头Content-Type都没有值,Tomcat接收浏览器传过来的参数默认是ISO-8859-1编码
直接获取
String name = request.getParameter("name")
//拿到的name值是乱码
设置参数的编码格式
request.setCharacterEncoding("iso-8859-1");
Sring name = request.getParameter("name");
//拿到的name值也是乱码
解决方法
String name = request.getParameter("name");
byte[] bytes = name.getBytes("iso-8859-1");
name = new String(bytes,"utf-8");
//乱码问题解决
POST 请求时Header 中Content-Type=application/x-www-form-urlencoded; charset=UTF-8,后台设置编码格式后正常
Spring 提供字符编码过滤器可以解决POST请求乱码问题
Web.xml
<filter>
<filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>