1 页面乱码 即在jsp中写入中文,但是现实为乱码
在http的响应(response)中添加编码信息,使用如下方式:
<%@ page contentType="text/html; charset=gb2312"%>
这段要放在jsp页面的第一行,用来指定响应的类型和编码格式,contentType为text/html就是html内容,charset表示编码为gb2312。这样浏览器就可以从响应中获得编码格式了。
表示java在将jsp编译成html的时候用gb2312编码格式
还需要在html中指定编码格式。
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
meta的作用是众所周知的为IE浏览器提供编码选择,是用来”显示”最后的数据的。
2 POST乱码
Html发送请求的时候,使用的编码是iso-8859-1(这是传递参数的默认编码格式),意味着只有英文是有效字符
解决方法:
request.setCharacterEncoding("gb2312");
表示在网页之间传递参数的时候指定编码格式为gb2312。不是iso8859-1了
3 GET乱码
POST方式下的解决方式还算简单,因为POST方式下提交的数据都是以二进制的方式附加在http请求的body部分发送,只需要在后台指定编码格式就足矣解决。
get不能用request.setCharacterEncoding("gb2312");这句了
必须自己一个个将参数解码 即:
<%=new String(new String(request.getParameter("username").getBytes("iso-8859-1"), "gb2312")%>