博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URL传递多个参数遇到的bug
阅读量:4596 次
发布时间:2019-06-09

本文共 886 字,大约阅读时间需要 2 分钟。

bug所在:

  通过URL传递多个参数的时候,其一是中文出现乱码,其二是空格被“%20”替代;

  原因分析:原理暂时还不清楚,后续再研究下原理,只知道有中文的时候就会出现乱码;%20是url空格的编码;

提到编码,就得来简单了解下(周末再详细补充下知识)编码的几种格式:

一:ASCII码,美国标准信息交换码,只有7位.

二:UTF-8:是一种针对Unicode的可变长度字符编码,用1-6个字节 编码Unicode字符.

三:ISO-8859-1,是浏览器默认编码,包含了西方欧洲语言不可缺少的附加字符,它是单字节码,向下兼容ASCII.

  解决办法:传递url的时候通过两次decodeURL编码:encodeURL(encodeURL(url))(为什么要经过两次呢,每次编码到底发生了什么事情呢?第一次encodeURL,按照utf-8获取多字节字符将其一一遍历成单字节字符,第二次encodeURL,进行编码)而在另一个页面中(如:2017-07-03 22:52:10)这种格式的时候,由于有空格,所以就出现了这种结果:2017-07-03%2022:52:10,如何搞呢,这么搞:encodeURL(2017-07-03%2022:52:10)就回来了(2017-07-03 22:52:10)。

查了下资料,这其中涉及到一个知识点:

编码和解码的三种方式:

一:encodeURL(url)/decodeURL(url):主要用于整个URL,不会对本身属于URL的特殊字符进行编码,如 : , / , ? , # 等等,

二:encodeURLComponent()/decodeURLComponent()主要用于URL的某个字段,会对任何非标准字符进行编码,所以平时用的地方比较多

三:escape()/unescape(),只能编码ASCII码,已经废弃,所以不用考虑它啦;

记录开发中的每一个bug,进步从对bug的思考总结开始!

  

转载于:https://www.cnblogs.com/tiny-jiao/p/7113526.html

你可能感兴趣的文章
jar war ear
查看>>
CheckBox自定义样式
查看>>
史上最全的程序猿面试资料
查看>>
什么是分布式消息中间件?
查看>>
linux命令 xargs
查看>>
pythonic operations
查看>>
idea如何打开右侧工具栏
查看>>
msyql数据库位置
查看>>
POJ 3253 Fence Repair 贪心+优先队列
查看>>
java导出csv 代码
查看>>
16个ASP.NET MVC扩展点【附源码】
查看>>
观察者模式(observer)
查看>>
路由处理生成响应
查看>>
w3school HTML基础教程
查看>>
在centos下解决 “致命错误:curses.h:没有那个文件或目录”
查看>>
程序员必学的职场人际关系22原则
查看>>
css3的transition效果和transfor效果
查看>>
[置顶] 小白学习KM算法详细总结--附上模板题hdu2255
查看>>
POJ 2400 最小权匹配
查看>>
dp 40题 转载
查看>>