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 相关文章推荐
教你如何将 Sublime 3 打造成 Python/Django IDE开发利器
Jul 04 Python
python的keyword模块用法实例分析
Jun 30 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
对python借助百度云API对评论进行观点抽取的方法详解
Feb 21 Python
Python字典常见操作实例小结【定义、添加、删除、遍历】
Oct 25 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
python pptx复制指定页的ppt教程
Feb 14 Python
python实现程序重启和系统重启方式
Apr 16 Python
Python实现仿射密码的思路详解
Apr 23 Python
Python项目打包成二进制的方法
Dec 30 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 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
php 信息采集程序代码
2009/03/17 PHP
关于使用coreseek并为其做分页的介绍
2013/06/21 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
js中的this关键字详解
2013/09/25 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
ES6新数据结构Map功能与用法示例
2017/03/31 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
vue中的inject学习教程
2019/04/24 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
ubuntu安装mysql pycharm sublime
2018/02/20 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
2019/02/21 Python
python实现指定ip端口扫描方式
2019/12/17 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
python实现遍历文件夹图片并重命名
2020/03/23 Python
Pycharm中安装wordcloud等库失败问题及终端通过pip安装的Python库如何添加到Pycharm解释器中(推荐)
2020/05/10 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
英国豪华文具和皮具配件经典老品牌:Smythson(斯迈森)
2018/04/19 全球购物
车间统计员岗位职责
2014/01/05 职场文书
平面设计师岗位职责
2014/09/18 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
个人投资合作协议书
2014/10/12 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
学生检讨书
2015/01/27 职场文书
运动员入场词
2015/07/18 职场文书