jsp中文乱码问题完全解决方案


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")%>

原文地址:https://www.cnblogs.com/SuperXJ/p/1575268.html