我在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。
谢谢!
马科斯
答案 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)
# ...