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实现根据月份和日期得到星座的方法
Mar 27 Python
详解在Python中处理异常的教程
May 24 Python
Swift 3.0在集合类数据结构上的一些新变化总结
Jul 11 Python
Python通过paramiko远程下载Linux服务器上的文件实例
Dec 27 Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 Python
使用Filter过滤python中的日志输出的实现方法
Jul 17 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
Nov 15 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
Python操作PostgreSql数据库的方法(基本的增删改查)
Dec 29 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
Jan 24 Python
python中print格式化输出的问题
Apr 16 Python
Elasticsearch 数据类型及管理
Apr 19 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
为什么那些咖啡爱好者大多看不上连锁咖啡店?
2021/03/06 咖啡文化
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
php判断字符串在另一个字符串位置的方法
2014/02/27 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
动态刷新 dorado树的js代码
2009/06/12 Javascript
JavaScript Timer实现代码
2010/02/17 Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
2016/01/23 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
canvas简单快速的实现知乎登录页背景效果
2017/05/08 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
nodejs实现大文件(在线视频)的读取
2020/10/16 NodeJs
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
PyQt5内嵌浏览器注入JavaScript脚本实现自动化操作的代码实例
2019/02/13 Python
python用requests实现http请求代码实例
2019/10/31 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
pandas 中对特征进行硬编码和onehot编码的实现
2019/12/20 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
2020/12/17 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
JAVA招聘远程笔试题
2015/07/23 面试题
毕业生物理教师求职信
2013/10/17 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
爱国主义演讲稿
2014/05/07 职场文书
应届生求职自荐信范文
2015/03/04 职场文书
大学生党课感想
2015/08/11 职场文书
感谢师恩主题班会
2015/08/17 职场文书