栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 学习之编码解码

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 学习之编码解码

编码与解码

encode()和decode()
  • decode英文意思是 解码,encode英文原意 编码
  • 字符串在Python内部的表示是unicode编码, 因此,在做编码转换时,通常需要以unicode作为中间编码
  • decode()的作用是将其他编码的字符串转换成unicode编码
  • encode()的作用是将unicode编码转换成其他编码的字符串
[详情参考](python中的encode()和decode()函数 - 年轻人——001 - 博客园 (cnblogs.com))
url编码

Url编码通常也被称为百分号编码,在Http协议中参数的传输是**“key=value"这种字典形式的,如果要传多个参数就需要用“&”**符号对键值对进行分割。如”?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值。

​ 对于Url中的不引起歧义的字符,编码和不编码是等价的,但是对于上面提到的这些字符,如果不经过编码,那么它们有可能会造成Url语义的不同。因此对于Url而言,只有普通英文字符和数字,特殊字符 $-.+!*’() 还有保留字符,才能出现在未经编码的Url之中。

歧义字符:

  • 空格:Url在传输的过程,或者用户在排版的过程,或者文本处理程序在处理Url的过程,都有可能引入无关紧要的空格,或者将那些有意义的空格给去掉。
  • 空格:Url在传输的过程,或者用户在排版的过程,或者文本处理程序在处理Url的过程,都有可能引入无关紧要的空格,或者将那些有意义的空格给去掉。
  • #:通常用于表示书签或者锚点
  • %:百分号本身用作对不安全字符进行编码时使用的特殊字符,因此本身需要编码
  • %:百分号本身用作对不安全字符进行编码时使用的特殊字符,因此本身需要编码

​ URL编码在特殊字符的各个字节前加 % 后,服务端会把紧跟在“%”后的字节当成普通的字节,就是不会把它当成各个参数或键值对的分隔符。

如对url编码感兴趣,[参考](为什么要进行URL编码 - 降瑞雪 - 博客园 (cnblogs.com))


parse模块

parse 模块用于解析URL,支持对URL的操作包括拆分、拼接、编码、解码等

  • 解析URL,支持对URL的操作包括拆分、拼接、编码、解码等

  • URL parsing(URL解析)

    参考:https://blog.csdn.net/Wjf7496/article/details/109787586
    
  • URL quoting(URL引用)

    参考:https://blog.csdn.net/Wjf7496/article/details/109813106
    
常见函数:
  • urllib.parse.urlencode 将字典中key:value转换为key=编码后的value
  • urllib.parse.quote将str数据转换为对应编码
  • urllib.parse.unquote将编码后的数据转换为编码前数据
  • 获取url参数;parse.urlparse(url)
urlparse参考

urllib.parse.urlparse(urlstring, scheme=’’, allow_fragments=True)
urlparse()函数用来解析url,返回一个包含以下这六个元素的属性

属性索引
scheme (协议)0URL方案说明符
netloc (域名)1网络位置部分
path (路径)2分层路径
params (路径参数)3最后一个路径元素的参数
query (查询参数)4查询组件
fragment (片段)5片段识别
parseResult = parse.urlparse(url)
#返回元组
(scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='')

param_dict=parse.parse_qs(parseResult.query)

{'q': ['parse'], 'check_keywords': ['yes'], 'area': ['default']}

param_dict['q'][0]
'parse'
#注意:加号会被解码,可能有时并不是我们想要的
  • parse_qs()/parse_qsl()

分析url中query字段 该字段通过parse.urlsplit(url).query得到str类型的query字符串

urllib.parse.parse_qs():
	返回字典 其中value是一个列表,保存url中query中相同key的所有value值
	因此获取真正的value值还需要列表下标遍历 如query[key][0]
	
urllib.parse.parse_qsl()
	返回列表  列表的每一个元素是一个仅含两个元素的元组
	每个元组的第一个元素为dict的key,第二个元素为dict的value
	
  • urllib.parse.quote_plus 是在quote基础上强化了,

    会编码 斜线为‘%2F’; 空格为‘ ’编码为‘+’ 等等
    
  • urllib.parse.unquote_plus() 是在unquote基础上强化了
会解码 斜线为‘%2F’; 空格为‘ ’编码为‘+’ 等等
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/360283.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号