*WEB容器默认的字符串处理编码是ISO-8859-1
1.JSP页面显示时乱码——输出时乱码,
解决方案:为其指定中文字符集,前加<%@pagecontentType=”text/html”:chartset=”gb2312”%>

2.JSP页面传递中文参数时乱码——get表单提交
解决方案:String email=new String(request.getparmeter(“哈哈”).getByte(“ISO-8859-1”),”gb2312”);%>

3.servlet处理中文参数时乱码
request.setCharacterEcodeing(“gb2312”);在doPost中加入response.setCotentType(“”text/html;chartset=”gb2312”);

4.post表单乱码
提交页面给对应的JSP页面或者是servlet后,接收方出现表单数据中文值有乱码,解决方案:在接受post提交的参数之前,使用request.setCharacterEncodeing(“UTF-8”),设定只对post提交有用,get没有用
原因分析:
1.在文本框输入中文提交后,返回的是乱码,由于request.getparamter(“”),得到的参数编码的方式是有ISO-8859-1
(1).故在之前加上<%request.setCharaterEcnoding(“GBK”)%>,那么request就用这个编码接受
(2).在配置文件Server.xml中,扎到含Port=“8080”的connector区块,在其后面加上一句URIEncodeing=”GBK”,重启Tomcate,对所有的网站都有用

2.数据库中表中字段有中文信息,JSP运行死显示??原因是:数据库JDBC驱动程序,默认的在java和数据库之间传递,数据库都是以ISO-8859-1为默认的编码格式,几十数据库原本是用中文编码(如gbk),jdk也会自动主张的将其转为ISO-8859
解决方案:在连接数据库时,在URL中后面加上?useUnicode=true@characterEncoding=”GBK”,例如:mysql://localhost:3306/sqltest?useUnicode=true@characterEncoding=”GBK”

3.通过URL传递参数乱码
,这个转换字符串的拜年吗或者设置JSP页面显示编码都不行,只能改服务器servel.xml编码

7.浏览器版本低导致的乱码,编码:URLEncoding.encode(name,”utf-8”),传递给服务器”>,解码:URLDecoder.decode(name,”utf-8”)

8.返回浏览器乱码:由于response.getWriter()方法,返回的printerwriter对象默认使用的是ISO-8859-1,字符集编码,故用setchraterEncodeing,setconentType的方法

*总结:
1.对于浏览器接受服务器和发送服务器编码都是一样的,默认是JSP页面的response.setContentType方法,
2.而服务器发送的数据,则是按照response.setChractrEncoding——contentType——pageEncoding,优先顺序,
3.数据接收有三种方式:1.URL提交。2.get提交。3.post提交。
乱码问题的原因,程序的编码没有和编程人员的编码进行统一(就像你和一个不懂中文的人(计算机)进行交流,他当然不懂),故要不然手动转码,或者声明编码让程序转

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐