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中函数的参数定义和可变参数用法实例分析
Jun 04 Python
python选择排序算法实例总结
Jul 01 Python
python设计模式大全
Jun 27 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
Python分支语句与循环语句应用实例分析
May 07 Python
将python文件打包成EXE应用程序的方法
May 22 Python
详解将Pandas中的DataFrame类型转换成Numpy中array类型的三种方法
Jul 06 Python
Django如何实现防止XSS攻击
Oct 13 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
pandas数据分组groupby()和统计函数agg()的使用
Mar 04 Python
OpenCV-Python实现图像平滑处理操作
Jun 08 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/10/23 PHP
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
php计算给定日期所在周的开始日期和结束日期示例
2017/02/06 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
在jQuery 1.5中使用deferred对象的代码(翻译)
2011/03/10 Javascript
Javascript 按位与运算符 (&)使用介绍
2014/02/04 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
javascript实现获取浏览器版本、浏览器类型
2015/12/02 Javascript
AngularJS 使用 UI Router 实现表单向导
2016/01/29 Javascript
javascript 数组的正态分布排序的问题
2016/07/31 Javascript
用Vue.js实现监听属性的变化
2016/11/17 Javascript
javascript实现右下角广告框效果
2017/02/01 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
2018/09/07 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
2018/12/04 jQuery
微信小程序实现商品属性联动选择
2019/02/15 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
使用npm命令提示: 'npm' 不是内部或外部命令,也不是可运行的程序的处理方法
2020/05/14 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
2020/06/28 Javascript
基于python实现名片管理系统
2018/11/30 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
python爬虫之验证码篇3-滑动验证码识别技术
2019/04/11 Python
使用python对多个txt文件中的数据进行筛选的方法
2019/07/10 Python
简单了解Python write writelines区别
2020/02/27 Python
纯CSS3实现圆圈动态发光特效动画的示例代码
2021/03/08 HTML / CSS
怀俄明州飞钓:Platte River Fly Shop
2017/12/28 全球购物
英文版区域经理求职信
2013/10/23 职场文书
活动总结怎么写啊
2014/05/07 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
投标承诺函范文
2015/01/21 职场文书
结婚保证书(三从四德)
2015/02/26 职场文书
护理工作个人总结
2015/03/03 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python