Urllib2.urlopen python中文在windows中

时间:2014-01-05 15:53:46

标签: python-2.7 urllib2

我在python中创建了一个小脚本。目标是向返回Json文件并处理信息的页面发出请求。问题是我需要在网址中使用中文单词。当我用(例如):

发出请求时
f = urllib2.urlopen("http://maps.googleapis.com/maps/api/geocode/json?address=江苏省苏州市中国新加坡工业园区独墅湖科教创新区仁爱路111号&sensor=false")

在ubuntu中我没有问题,一切都很好,并给我一个正确的json文件。但是当我在Windows中尝试时,resquest失败了(告诉我该url不存在)。 使用urllib2的Windows中的中文字符有问题吗?

Windows的版本是7,ubuntu 12.4。我正在使用python 2.7。

谢谢!

马科斯

1 个答案:

答案 0 :(得分:2)

你应该对查询进行urlencode:

# -*- coding: utf-8 -*-
from urllib import urlencode
from urllib2 import urlopen

params = dict(address=u"我不知道中国人。", sensor="false")
query = urlencode([(k, v.encode('utf-8') if isinstance(v, unicode) else v)
                   for k, v in params.items()])
r = urlopen("http://maps.googleapis.com/maps/api/geocode/json?" + query)
# ...