项目中的乱码问题

(一):get方法提交
1:客户端提交时
在提交前,url将字符串拼接后,先对url进行编码后,再传到服务器。在编码时,不用的浏览器的编码默认格式不同,一般中文的默认为gbk,将提交的信息URLEncode后,再安iso-8859-1的编格式转换成二进制随着请求头发送出去
2。服务器端(tomcat)是如何将数据获取到进行解码的。
第一步是先把数据用iso-8859-1进行解码,tomcat获取数据的是ASCII范围内的请求头字符,其中的请求url里面带有参数数据,如果参数中有中文等特殊字符,那么目前还是URL encode后的%XY状态。通常大家都是request.getParameter("name")获取参数数据,我们在request对象或得的数据都是经过解码过的,而解码过程中程序里是无法指定,request.setCharacterEncoding("字符集")可以指定解码方式,对于get方法是无能为力的。用什么编码方式解码数据的呢,这是tomcat的事情了,默认缺省用的是iso-8859-1,这样我们就能找到为什么get请求带中文参数为什么在服务器端得到乱码了,原因是在客户端一般都是用UTF-8或GBK对数据URL encode,这里用iso-8859-1方式URL decoder显然不行,在程序里我们可以直接
new String(request.getParameter("name").getBytes("iso-8859-1"),"客户端指定的URL encode编码方式")
tomcat设置编码格式:
<Connector port="8080" protocol="HTTP/1.1" maxThreads="150" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
(二):post方法提交
1.客户端(浏览器)在post方法里所要传送的数据也要URL encode,在form所在的html文件里如果有段<meta http-equiv="Content-Type" content="text/html; charset=字符集(GBK,utf-8等)"/>,那么post就会用此处指定的编码方式编码。
作用:1.是为了让浏览器知道用什么字符集来对网页解释 2.指定form表单的post方法提交数据的URL encode编码方式。对于get方法来说,浏览器对数据的URL encode的编码方式是有浏览器设置来决定,而post方法,开发人员可以指定。
2。如果用tomcat默认缺省设置,也没做过滤器等编码设置,那么他也是用iso-8859-1解码的,但是request.setCharacterEncoding("字符集")可以派上用场。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值