基础语言实现URLEncode时没有完全遵守RFC目的是啥
感谢 @Yaya Match的回答urlEncode那个 是因为最早URL编码器的规则(URL规范) 和我们编程用的ASCII码之类的规则不一样,所以传输的时候要进行URL转换,这个我记得我们之前讨论base64算法的时候商议过,可以参考百度的base64 中的应用一栏的说明... 如果是post提交我觉得可以忽略这个问题还有这篇文章也可以参考一下 http://blog.csdn.net/z69183787/article/details/35987711
■网友
Python 的 urllib.parse 模块关于 Percent-Encoding 有如下几个接口:def quote(string, safe=\u0026#39;/\u0026#39;, encoding=None, errors=None)def quote_plus(string, safe=\u0026#39;\u0026#39;, encoding=None, errors=None)其中的 quote 不对空格做额外处理。但是 quote_plus 则会把空格替换为加号。其文档字符串中有这么一句描述:Like quote(), but also replace \u0026#39; \u0026#39; with \u0026#39;+\u0026#39;, as required for quoting HTML form values. 再来看一下 Go 中的处理。Go 中相应的接口是 net/url.QueryEscape。相应实现: case c == \u0026#39; \u0026#39; \u0026amp;\u0026amp; mode == encodeQueryComponent: t = \u0026#39;+\u0026#39;也就是说,当 mode 为 encodeQueryComponent 的时候,Go 中的 QueryEscape 同样也会把空格替换为加号。Java UrlEncoder.encode 的文档中(URLEncoder (Java Platform SE 7 b99))有这么一句话:Translates a string into application/x-www-form-urlencoded format using a specific encoding scheme.关于 application/x-www-form-urlencoded,我找到如下资料:urlencode - When to encode space to plus (+) or %20?Percent-encodingRFC-3986(http://www.rfc-base.org/txt/rfc-3986.txt) 2.2. Reserved Characters 有这么一段:These characters are called "reserved" because they may (or may not) be defined as delimiters by the generic syntax, by each scheme-specific syntax, or by the implementation-specific syntax of a URI\u0026#39;s dereferencing algorithm.----
■网友
~~~~~~~更新~~~~我的理解是,http协议头分好多键值对,区分这些不同键值对的条件就是回车换行,而空格是切割键和值的。如果我们的URL里面有空格,就会造成歧义,把URL整体切成两半,所以空格要转换成加号。~~~~~~原回答中的错误~~~~~~切割键值对的条件不应该是空格。感谢@云天明指出。~~~~~~~~~~~~~~~如有不妥,欢迎指正。
推荐阅读
- 北京22家市属医院均开展安检基本实现重点区域安检措施全覆盖
- 长江流域渔民退捕“上岸”实现扩产新致富
- 实现“甜蜜计划”,这对中哈跨国夫妻好甜
- 甘肃天水落地脱贫“基础工程”见效累计减贫92.08万人
- 北京地铁11号线西段三座车站提前实现主体结构封顶
- OC为何跌出语言榜前十
- dart这编程语言现在发展怎么样了,语法与Java,c#很相似,甚至更简洁
- 人民车市|新语言、新起点,捷达VS7 强势入局
- 有点计算机基础的人想尽快找份编程的工作。哪种编程的工作最好找还需要学些啥
- C语言 指针引用数组的地址问题
