Python使用urllib模块对URL网址中的中文编码与解码实例详解


Posted in Python onFebruary 18, 2020

URL网址链接中的中文编码说明

中文的gbk(GB2312)编码: 一个汉字对应两组%xx,即%xx%xx

中文的UTF-8编码: 一个汉字对应三组%xx,即%xx%xx%xx

可以利用百度进行URL编码解码 默认gbk

https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD

python3编码解码示例

# -*- coding: utf-8 -*-

# @File  : urldecode_demo.py
# @Date  : 2018-05-11

from urllib.request import quote, unquote

# 编码

url1 = "https://www.baidu.com/s?wd=中国"

# utf8编码,指定安全字符
ret1 = quote(url1, safe=";/?:@&=+$,", encoding="utf-8")
print(ret1)
# https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD

# gbk编码
ret2 = quote(url1, encoding="gbk")
print(ret2)
# https%3A//www.baidu.com/s%3Fwd%3D%D6%D0%B9%FA


# 解码
url3 = "https://www.baidu.com/s?wd=%E4%B8%AD%E5%9B%BD"

ret3 = unquote(url3, encoding='utf-8')
print(ret3)
# https://www.baidu.com/s?wd=中国

实例中我们使用到了urllib模块和urllib.unquote()函数

import urllib
rawurl=xxx
url=urllib.unquote(rawurl)

所用模块:urllib

所用函数:urllib.unquote()

案例

import urllib
rawurl = "%E6%B2%B3%E6%BA%90"
url = urllib.unquote(rawurl)
print url

输出

河源

urllib.unquote()目的是对url编码进行解码,与该函数对应的是编码函数urllib.quote()

>>> import urllib
>>> urllib.quote("河源")
'%E6%B2%B3%E6%BA%90

问题扩展

URL为何要编码、解码?

通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据。对于Url来说,之所以要进行编码,是因为Url中有些字符会引起歧义。

例如,Url参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。

又如,Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能在Url中包含任何非ASCII字符,例如中文。否则如果客户端浏览器和服务端浏览器支持的字符集不同的情况下,中文可能会造成问题。

更多关于Python使用urllib模块对URL编码与解码实例请查看下面的相关链接

Python 相关文章推荐
Python提取Linux内核源代码的目录结构实现方法
Jun 24 Python
Python使用pip安装报错:is not a supported wheel on this platform的解决方法
Jan 23 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
Jul 02 Python
详解Python字典小结
Oct 20 Python
python解析含有重复key的json方法
Jan 22 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 Python
python如何支持并发方法详解
Jul 25 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
python 获取字典特定值对应的键的实现
Sep 29 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
Mar 03 Python
python实现根据给定坐标点生成多边形mask的例子
Feb 18 #Python
python有序查找算法 二分法实例解析
Feb 18 #Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 #Python
Python 解析pymysql模块操作数据库的方法
Feb 18 #Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
Feb 18 #Python
python_array[0][0]与array[0,0]的区别详解
Feb 18 #Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 #Python
You might like
Yii结合CKEditor实现图片上传功能
2014/06/13 PHP
php目录拷贝实现方法
2015/07/10 PHP
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
JQuery标签页效果实例详解
2015/12/24 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
解决ztree搜索中多级菜单展示不全问题
2017/07/05 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
动态内存分配导致影响Javascript性能的问题
2018/12/18 Javascript
JQuery常见节点操作实例分析
2019/05/15 jQuery
Node.js爬虫如何获取天气和每日问候详解
2019/08/26 Javascript
vue实现弹幕功能
2019/10/25 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
VUE : vue-cli中去掉路由中的井号#操作
2020/09/04 Javascript
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python基于正则表达式实现文件内容替换的方法
2017/08/30 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
python numpy 反转 reverse示例
2019/12/04 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
门卫人员岗位职责
2013/12/24 职场文书
校园活动策划书范文
2014/01/10 职场文书
2014两会学习心得:时代的发展
2014/03/17 职场文书
银行领导班子四风对照检查材料
2014/09/27 职场文书
勇敢的心观后感
2015/06/09 职场文书
公司宣传语大全
2015/07/13 职场文书
国际贸易实训总结
2015/08/03 职场文书
《水上飞机》教学反思
2016/02/20 职场文书
PHP使用QR Code生成二维码实例
2021/07/07 PHP
Python torch.flatten()函数案例详解
2021/08/30 Python
Python OpenGL基本配置方式
2022/05/20 Python