乱码分类
1.post
2.get
而get分为三种(目前已经了解到)
a.表单form get提交方式乱码
b. 超链接(a href) 传递参数乱码
c.重定向、转发乱码
乱码原因:解码编码不一致。
为什么要编码解码
在物理层传输时,需要将字符编码为字节
编码:字符->字节
解码:字节->字符
在服务端tomcat中,不同版本默认编码不一样(源文档中记录)
在tomcat7及以前版本中,URIEncoding默认为iso-8859-1.
在tomcat8版本以后默认采用utf-8.(只针对form get方式的传输)
解决方法
post提交。设置request.setCharacterEncoding("utf-8");通知服务端以utf-8解码。
get
form表格 如果tomcat版本在8及以后,不会乱码,tomcat7及以前,获取前端的值a.
String a1=new String(a.getBytes("iso-8859-1"),"utf-8");先以iso-8859-1解码,再用utf-8编码
转化成人可识别文字。
response.sendRedirect:其就像第二次get方式提交。但是tomcat针对其默认解码任然为iso-8859-1.
所以假定传输的内容为a. String a1=String a1=new String(a.getBytes("utf-8"),"iso-8859-1");
将其以iso-8859-1编码方式进行传输。
对于超链接a href 传输,其本质也是get方式。解决方法 参考https://blog.youkuaiyun.com/zhxtpray/article/details/52440076
目前理解就到此,有错欢迎指出