为什么要两次调用encodeURI来解决乱码问题

.encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.. UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号.

假设页面端输入的中文是一个“中”,按照下面步骤进行解码

1.第一次encodeURI,,按照utf-8方式获取字节数组变成[-28,-72-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,这样就变成了[E4,B8,AD],最后变成[%E4,%B8,%AD] 此时已经没有了多字节字符,全部是单字节字符。

发往服务器端,当应用服务器调用getParameter方法,getParameter方法会去向应用服务器请求参数应用服务器最初获得的就是发送来的

3\、再用UTF-8解码一次,就得到"中"了。

想想看,如果不编码两次,当服务器自动解码的时候,假如是按照ISO-8859去解码UTF-8编码的东西,就是会出现乱码。

JS:

document.authorityForm.action = basePath3+"User_viewUser.do?id="+id+"&roleName="+encodeURI(encodeURI(roleName))+"&roleType="+roleType;

JAVA后台:

roleName = java.net.URLDecoder.decode(getRequest().getParameter("roleName"),"UTF-8");

版权声明:本文为博主原创文章,未经博主允许不得转载。

怀着淡定从容的心态去面对,也就没有了真正意义上的寂寞了。

为什么要两次调用encodeURI来解决乱码问题

相关文章:

你感兴趣的文章:

标签云: