URL编码(汉字)后提交给后台相关问题,为什么后台有时候解码一次,有时候解码两次

关于url编码详细介绍需要看下阮一峰的文章普及基础知识:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html

要想解决:前端用encodeURI()编码两次,为什么后台有时候解码一次,有时候解码两次的问题,要分成三个小问题解析。

一:前端用encodeURI()编码两次,为什么后台只需要解码一次

因为request.getParameter()函数时,会自动进行一次URI的解码过程,所以前端编码两次后端只要编码一次。

二:encodeURI()为什么要编码两次,我编码一次不行吗,为什么要费事的多编码一次

第一次编码后将汉字编码为%和字母数字的格式,而第二次编码的时候是对%字母数字进行编码,虽然解码的时候使用的是ISO-8859-1,但是对于%和字母数字而言用ISO-8859-1和UTF-8解码出来的是一样的,此时就回到了汉字被编码过一次的字符串了,当再次进行解码的时候使用UTF-8就回将它转会汉字;

三:为什么后台有时候解码一次,有时候解码两次

一般get和post请求会对参数进行再编码,所以如果你原来编码两次,再加上自己编码,相当于编码三次,所以后台需要解码两次。

window.location.href=拼接参数时,如果参数里有汉字会给你编码后请求,如果没有汉字,不会再编码。所以前端编码两次,后端解码一次。

博客原文链接:http://blog.csdn.net/wabiaozia/article/details/77607266

四:浏览器的地址栏有时会让我们误解,参考博主文章:http://blog.csdn.net/wabiaozia?viewmode=contents      

有时我们看到地址栏里命名是汉字,没有编码啊,其实这是浏览器的人性化优化,你只要把地址栏里数据复制出来放在txt中就可以看到编码效果。

注:仅供参考




  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠萝科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值