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使用点操作符访问字典(dict)数据的方法
Mar 16 Python
Python中编写ORM框架的入门指引
Apr 29 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
python实现发送邮件及附件功能
Mar 02 Python
python使用super()出现错误解决办法
Aug 14 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
基于python操作ES实例详解
Nov 16 Python
使用python动态生成波形曲线的实现
Dec 04 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
Django多数据库联用实现方法解析
Nov 12 Python
pycharm 实现复制一行的快捷键
Jan 15 Python
python实现简单的学生管理系统
Feb 22 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/01/07 PHP
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP动态生成指定大小随机图片的方法
2016/03/25 PHP
javascript预览上传图片发现的问题的解决方法
2010/11/25 Javascript
跨浏览器的事件对象介绍
2012/06/27 Javascript
seajs1.3.0源码解析之module依赖有序加载
2012/11/07 Javascript
js比较和逻辑运算符的介绍
2013/03/10 Javascript
如何使用jquery控制CSS样式,并且取消Css样式(如背景色,有实例)
2013/07/09 Javascript
JavaScript/Js脚本处理html元素的自定义属性解析(亲测兼容Firefox与IE)
2013/11/25 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
2014/04/20 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
jQuery+CSS3实现点赞功能
2017/03/13 Javascript
详解JS中的attribute属性
2017/04/25 Javascript
webpack源码之loader机制详解
2018/04/06 Javascript
关于AngularJS中ng-repeat不更新视图的解决方法
2018/09/30 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
layui使用表格渲染获取行数据的例子
2019/09/13 Javascript
解决vue scoped html样式无效的问题
2020/10/24 Javascript
python类和函数中使用静态变量的方法
2015/05/09 Python
理解python中生成器用法
2017/12/20 Python
解决Pycharm运行时找不到文件的问题
2018/10/29 Python
Python如何读写二进制数组数据
2020/08/01 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
python time.strptime格式化实例详解
2021/02/03 Python
美国市场上最实惠的送餐服务:Dinnerly
2018/03/18 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
致长跑运动员加油稿
2014/02/20 职场文书
个人委托书范本
2014/04/02 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
2015年师德师风自我评价范文
2015/03/05 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
厉害!这是Redis可视化工具最全的横向评测
2021/07/15 Redis
css实现左上角飘带效果的完整代码
2022/03/18 HTML / CSS
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python