python3 urlencode | 您所在的位置:网站首页 › 红警2苏俄怎么打盟军部队 › python3 urlencode |
python3 urlencode 和 urldecode
故事背景
当我们在浏览器搜索内容时会发现浏览器会自动的将我们输入的内容转化为带有 很多% 的地址如下所示: https://www.baidu.com/s?wd=%E4%B8%BA%E4%BB%80%E4%B9%88&rsv_spt=1&rsv_iqid=0xeaa7d7410002e421&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&tn=baiduhome_pg&rsv_enter=1&rsv_dl=tb&rsv_sug3=9&rsv_sug1=11&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&prefixsug=%25E4%25B8%25BA%25E4%25BB%2580%25E4%25B9%2588&rsp=5&inputT=2965&rsv_sug4=3444 那么为什么浏览器要这么做?这么做有什么用? 原因解析在了解上面的问题前我们需要先搞清楚 URI、URL、以及URN 什么是URI、URL、URNURI(Uniform Resource Identifier:统一资源标识符): 用一个紧凑的字符串来表示抽象或物理资源。URI 只是规定如何摆哦是资源但是没有规定如何获取资源。 URL(Uniform Resource Locator:统一资源定位符):URL是URI最常见的表现形式,它明确说明如何从一个精准、固定的位置获取资源。URL不但规定了如何标识资源同时还规定了如何获取资源 大部分URL都遵循一种标准格式这种格式包含三个部分: URL第一部分称为方案(scheme),说明访问资源所使用的协议类型,这部分通常就是 HTTP 协议(http://)第二部分给出服务器的因特网地址 eg: www.taobao.com其余部分指定了Web服务器上某个资源 eg: /robots.txtURN(Uniform Resource Name:统一资源名称):URN作为特定内容的唯一名称使用与目前的资源所在地无关,使用这些这些位置无关的URN就可以将资源到处搬迁 三者关系如图所示: 为什么浏览器要将我们输入内容转义根据上面的内容我们了解到 URL 是资源定符,在URL中有些参数字符串是使用ke y=value 键值对的形式传参键值对之间使用 & 符号分隔。 假设如果你的value中包含有 = 或者 &,那么将会导致接收URL的服务器解析错误导致无法获取正确的资源,因此必须将引起歧义的 & 和 = 符号进行转义也就是对其进行编码。 又或者 URL 的编码格式采用 ASCII 码,而不是unicode,这也是就是说你不能在URL中包含任何非ASCII 字符,例如中文,否则如果客户端浏览器和服务端浏览器支持的字符集不同中文可能会造成问题。 类似以上的情况还有很多场景这里就不一一举例,为了避免上述问题浏览器默认对我们URL进行转义。 python urlencode 和 urldecode 的使用在 python3 中将中文进行 urlencode urldecode 编码需要使用 urllib 这个库 urlencode import urllib urllib.parse.quote(string, safe='/', encoding=None, errors=None) urldecode import urllib urllib.parse.unquote(string, encoding='utf-8', error='replace') 使用实例 import urllib urllib.parse.quote('打工人') >>> '%E6%89%93%E5%B7%A5%E4%BA%BA' urllib.parse.unquote('%E6%89%93%E5%B7%A5%E4%BA%BA') >>> '打工人' |
CopyRight 2018-2019 实验室设备网 版权所有 |