Python urllib2() 函数处理国际化/UTF-8 字符

2 投票
2 回答
850 浏览
提问于 2025-04-16 13:29

我在做一个个人的研究/娱乐项目,使用的是Python的urllib2()函数。不过,当我遇到包含非ASCII字符的链接,比如“الراجل اللى ورا عمر سليمان”或者“我爸是李刚”时,解释器(在Windows 7上的IDLE)就出现了问题。

s = urllib2.urlopen("http://www.bing.com/search?q=我爸是李刚")

我该怎么解决这个问题呢?(我需要把我的查询转换成ASCII吗,还是有其他方法可以让urllib2支持UTF-8呢?)

2 个回答

0

在编程中,我们经常会遇到一些问题,尤其是在使用特定的工具或库时。有时候,文档可能写得不够清楚,导致我们不明白该怎么做。这种情况下,我们可以去像StackOverflow这样的网站寻求帮助。在那里,很多人会分享他们的经验和解决方案。

当你在StackOverflow上提问时,记得描述清楚你遇到的问题,提供一些相关的代码和错误信息,这样别人才能更好地理解你的情况并给出建议。

同时,查看其他人的问题和答案也是一个很好的学习方式。你可以看到不同的解决方案,了解别人是如何解决类似问题的,这对提高你的编程能力非常有帮助。

总之,StackOverflow是一个很棒的资源,可以帮助你解决编程中的各种难题,只要你善于利用它。

# coding: utf-8

import urllib
import urlparse

scheme = 'http'
netloc = 'www.bing.com'
path = '/search'
qs = {'q': u'我爸是李刚'.encode('utf-8')}

print urlparse.urlunparse((scheme, netloc, path, '', urllib.urlencode(qs), ''))

# http://www.bing.com/search?q=%E6%88%91%E7%88%B8%E6%98%AF%E6%9D%8E%E5%88%9A
1
s = urllib2.urlopen("http://www.bing.com/search?"
              + urllib.urlencode({ 'q' : u'我爸是李刚' .encode('utf8') } )

应该可以正常工作。

撰写回答