一、在浏览器访问jsp页面时遇到乱码的问题
(1)在jsp页面没有指定字符集编码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body >
<div style="margin:100px auto;width: 600px;height:400px;background-color: lavender;text-align: center">
<br>
<form method="post" action="/doLogin.action">
<h3>登录</h3>
<br>
<br>
<label>用户名:</label><input type="text" name="username">
<br> <br>
<label>密 码:</label><input type="password" name="password">
<br><br> <br>
<div style="text-align: center">
<button type="submit">登录</button>
<button type="reset">重置</button>
<br>
<p><a href="register.jsp">还没有帐号?点击这里注册!</a></p>
</div>
</form>
</div>
</body>
</html>
解决办法时加上头部这一部分<%@ page contentType="text/html; charset=utf-8"%> 默认一般情况下,java内核和class都是采用unicode来编码的,而jsp页面的默认解码方式是
iso的,因此导致无法解析
(2)编码字符集设置不一致
<%@ page language="java" pageEncoding="gb2312"%> -----1
<%@ page contentType="text/html;charset=iso8859-1"%>-----2
<html>
<head>
<title>JSP的中文处理</title>
<meta http-equiv="Content-Type" content="text/html charset=gb2312">------3
</head>
<body>
<%out.print("JSP的中文处理");%>
</body>
</html>
第一处<%@ page language="java" pageEncoding="gb2312"%>的编码格式为jsp文件的存储格式。根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。
第二处编码为解码格式。因为存为gb2312的文件被解码为iso8859-1,这样如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,也会出现乱码。必须一致才可以。
第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式用不用设置都可以。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式出现了乱码。
目前开发中遇到的第一个编码问题,一篇博客中总结了数据提交,数据库等编码问题,先mark下地址
http://www.cnblogs.com/chengkai/articles/2171848.html
二、post和get中出现的乱码问题
(1)post乱码问题
解决办法:在web.xml中增加解决解决post乱码的过滤器
<!--解决POST乱码问题-->
<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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(2)get乱码问题
get乱码一般都是页面编码和web容器如tomcat中的不一致,tomcat默认的时iso8859-1的编码
解决办法:一种时在tomcat的配置文件中增加比如用到的utf-8的编码如下
<Connector URIEncoding="utf-8" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/>
一种就是对参数进行iso的转码