1.乱码问题出现的原因:
Tomcat默认编码是iso-8859-1,而不是中文的utf-8
2.乱码问题可能出现的地方:
(1)HTML页面中
(2)JSP页面中
(3)页面数据传输中
(4)get请求中
(5)post请求中
(6)数据库中
3.相应的解决方法:
(1)HTML页面中:
在<head>标签下更改charset
<head>
……
<meta http-equiv=Content-Type content="text/html;charset=utf-8">
……
</head>
(2)JSP页面中:
<%@ page language="java" contentType="text/html;charset=utf-8"
pageEncoding="utf-8"%>
需要注意的是:pageEncoding是JSP文件本身的编码;contentType的charset是服务器发送给客户端时的内容编码
(3)页面数据传输中
最佳方法是采用编码过滤器来解决。设置一个过滤器转码所有传输数据
<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>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern></url-pattern>
</filter-mapping>
(4)get请求中
获取请求的字符串,然后把整个字符串进行转换(假设原编码为ISO-8859-1)
String param=request.getParameter("param");
param = new String(param.getBytes("ISO-8859-1"), "UTF-8");
(5)post请求中
在Servlet页面中添加
response.serCharacterEncoding("UTF-8");
(6)数据库中
在JDBC驱动的URL上添加:
jdbc:mysql://localhost/test?user=root&password=123456&useUnicode=true&characterEncoding=UTF-8