urldecoder?URLEncoder
大家好,如果您还对urldecoder不太了解,没有关系,今天就由本站为大家分享urldecoder的知识,包括URLEncoder的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
什么是urlencode编码
不是很理解你的意思
从HTTP协议来讲,一个标准的URL是有固定的编码方式的,它只能包含固定的字符集
比如你输入一个网址
我&cl=3,在访问这个网址的时候
网络上传输的时候,‘我’这字会变成%CE%D2这种编码
网站收到你这个网址的时候,再把%CE%D2转换成‘我’字才能理解你这个网址的意思
js 传值url 乱码问题
1.客户端提交时使用encodeURI或者encodeurIcompent参数来进行utf-8编码,然后发送给服务器,如果使用post方式的话可以通过request.setCharacterEncoding来设定用来解读参数的编码。如果用get方式的话,使用new String(arg.getBytes("iso-8859-1"),"utf-8")的方式来转码。
2.发送ajax请求时,请使用post方式,由于AJAX默认使用utf-8的编码提交参数,因此如果不是文件上传得话,为ajax的Content-Type请求头设置"application/x-www-form-urlencoded;charset="utf-8",以此来通知服务器,客户端发送参数所使用的编码。这样,服务器端可以直接通过String word= request.getParameter("word");来获取经过转码后的参数值,省去了request.setCharacterEncoding。
为什么要两次调用encodeURI来解决乱码问题
.encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.
. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.
假设页面端输入的中文是一个“中”,按照下面步骤进行解码
1.第一次encodeURI,按照utf-8方式获取字节数组变成[-28,-72-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,这样就变成了[E4,B8,AD],最后变成[%E4,%B8,%AD]此时已经没有了多字节字符,全部是单字节字符。
2、第二次encodeURI,进行编码,会把%看成一个转义字符,并不编码%以后字符,会把%编码成%25.把数组最后变成[%25E4,%25B8,%25AD]然后就把处理后的数据[%25E4,%25B8,%25AD]发往服务器端,
当应用服务器调用getParameter方法,getParameter方法会去向应用服务器请求参数
应用服务器最初获得的就是发送来的[%25E4,%25B8,%25AD],应用服务器会对这个数据进行URLdecode操作,应用服务器进行解码的这一次,不管是按照UTF-8,还是GBK,还是ISO-8859,,都能得到[%E4,%B8,%AD],因为都会把%25解析成%.并把这个值返回给getParameter方法
3\、再用UTF-8解码一次,就得到"中"了。
想想看,如果不编码两次,当服务器自动解码的时候,假如是按照ISO-8859去解码UTF-8编码的东西,就是会出现乱码。
JS:
[sql] view plain copy
document.authorityForm.action= basePath3+"User_viewUser.do?id="+id+"&roleName="+encodeURI(encodeURI(roleName))+"&roleType="+roleType;
Java后台:
[sql] view plain copy
roleName= java.net.URLDecoder.decode(getRequest().getParameter("roleName"),"UTF-8");
好了,文章到此结束,希望可以帮助到大家。