Python urllib2.urlopen打开中文url的编码处理_Luffy's Space_百度空间

本文介绍了使用Python的urllib2模块打开包含中文字符的URL时的编码处理方法,包括如何正确编码和解码URL,避免出现UnicodeError,并提供了实例代码以确保URL能够正常解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python urllib2.urlopen打开中文url的编码处理_Luffy's Space_百度空间

Python urllib2.urlopen打开中文url的编码处理
2010-03-06 15:49

参考文章:http://lijiang.javaeye.com/blog/312247

在用urllib2.urlopen(url)时,如果url里面包含中文,则必须对此url进行编码处理,否则会引起UnicodeError。

搜索后找到了相关的处理方法

引用参考文章的:

当处理HTTP链接的时候,链接如果有中文的话,那么发起HTTP链接的时候,一定要先把URL编码,否则就会出现问题。

而在python中,用 urllib2.quote(URL)进入编码和urllib2.unquote(URL) 解码的时候,有一点需要注意:

就是URL字符串不能是 unicode编码,此时必须把URL编码转换成适当的编码,如utf-8或gb2312等。

而python处理编码转换的机制如下:原来编码>>内部编码>>目的编码

python的内部编码是使用unicode来处理的

>>>gb=”中国” #此处为原本gb2312编码

>>>uni=unicode(gb,'gb2312') #把gb2312编码转换成unicode的内部编码

>>>utf=uni.encode('utf-8') #把unicode编码转换成utf-8目的编码

因为中文在URL中进行了url quote处理的,例如:

http://***.com/newsearch/books/?query=你好

实际上的URL是:

http://***.com/newsearch/books/?query=%C4%E3%BA%C3

因此在将url传给urlopen之前,应该对url进行unquote

python 文档中对unqoute的描述为:

Replace %xx escapes by their single-character equivalent.

Example: unquote(‘/%7Econnolly/’) yields ‘/~connolly/’.

综上所述,对url先进行编码上的转换,然后再用unquote处理,就能得到可获取的url了。

我的代码如下:

query=request.GET['query']

url='http://***.com/search/api/books/q=' + query

url=url.encode('utf-8')

url=urllib2.unquote(url)

data=urllib2.urlopen(url)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值