为什么要进行URL编码
2016-04-27 23:35
239 查看
针对“name1=value1&name2=value2”我们来说一下客户端到服务端的概念上解析过程:
上述字符串在计算机中用ASCII吗表示为:
6E616D6531 3D 76616C756531 26 6E616D6532 3D 76616C756532。
6E616D6531:name1
3D:=
76616C756531:value1
26:&
6E616D6532:name2
3D:=
76616C756532:value2
服务端在接收到该数据后就可以遍历该字节流,首先一个字节一个字节的吃,当吃到3D这字节后,服务端就知道前面吃得字节表示一个key,再想后吃,如果遇到26,说明从刚才吃的3D到26子节之间的是上一个key的value,以此类推就可以解析出客户端传过来的参数。
现在有这样一个问题,如果我的参数值中就包含=或&这种特殊字符的时候该怎么办。
比如说“name1=value1”,其中value1的值是“va&lu=e1”字符串,那么实际在传输过程中就会变成这样“name1=va&lu=e1”。我们的本意是就只有一个键值对,但是服务端会解析成两个键值对,这样就产生了奇异。
如何解决上述问题带来的歧义呢?解决的办法就是对参数进行URL编码
URL编码只是简单的在特殊字符的各个字节前加上%,例如,我们对上述会产生奇异的字符进行URL编码后结果:“name1=va%26lu%3D”,这样服务端会把紧跟在“%”后的字节当成普通的字节,就是不会把它当成各个参数或键值对的分隔符。
另外一个问题,就是为什么我们要用ASCII传输,可不可以用别的编码?
当然可以用别的编码,你自己可以开发一套编码,然后自己解析。就像大部分国家都有自己的语言一样。那国家之间要交流,怎么办? 用英语把,英语的使用范围最广。
相关文章推荐
- java-用HttpURLConnection发送Http请求.
- 分享微信开发Html5轻游戏中的几个坑
- 星外ASP.Net的安全设置相关说明
- VBScript 剪贴板抓取URL并在浏览器中打开
- C#、ASP.NET通用扩展工具类之TypeParse
- 实现ASP.NET无刷新下载并提示下载完成的开发思路
- ASP编码必备的8条原则
- C#、ASP.NET通用扩展工具类之LogicSugar
- 用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- XML指南——XML编码
- 程序中常用的种代码
- asp获取URL参数的几种方法分析总结[原创]_应用技巧_脚本之家
- C#中字符串编码处理
- ExtJS中文乱码之GBK格式编码解决方案及代码
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- 程序员趣味读物 谈谈Unicode编码
- ASP.NET页面间的传值的几种方法
- 文本文件编码方式区别
- C语言安全编码之数值中的sizeof操作符