Java web开发中的乱码问题主要包括以下三种:
- jsp页面中,中文显示乱码
- get请求中文参数传输到服务端乱码了
- post请求中文参数传输到服务端乱码了
jsp页面乱码
Jsp文件中会出现下面所示的编码指定方式:
<%@ page language=“Java” contentType=“text/html; charset=UTF-″ pageEncoding=“UTF-″%>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8″>
- pageEncoding=”utf-8” –该jsp文件自身采用的编码格式,也就是告诉服务器使用什么编码翻译jsp文件成java文件。 注意: jsp中post表单的编码由pageEncoding和contentType参数决定,以pageEncoding为准,如果没有pageEncoding则以contentType为准,如果没有contentType以Meta标签中的charset为准,都没有则以ISO-8859-1编码。
- contentType=”text/html;charset=utf-8”服务器发送浏览器的数据类型和内容编码。其中charset=”utf-8”–用来指定Tomcat返回响应时采用的编码,也是post方式提交参数的编码方式。
- Meta标签中的charset是在contentType未指定编码时采用的默认编码格式。
get请求中文乱码处理方案

post请求乱码处理方案
针对上述get和post请求中文乱码问题问题,其实在Java web方式中的处理很简单,只需要在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-</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>
总结
开发时应注意工作区编码,前端编码,服务器编码,数据库编码一致。造成乱码的原因就是因为使用了错误的字符编码去解码字节流,因此当我们在思考任何跟文本显示有关的问题时,请时刻保持清醒:当前使用的字符编码是什么。