Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Urllib2.urlopen python中文版windows_Python 2.7_Urllib2 - Fatal编程技术网

Python 2.7 Urllib2.urlopen python中文版windows

Python 2.7 Urllib2.urlopen python中文版windows,python-2.7,urllib2,Python 2.7,Urllib2,我正在用python做一张小纸条。目标是向返回Json文件的页面发出请求,并处理该信息。问题是我需要在URL中使用中文单词。当我提出请求时(例如): 在ubuntu中,我没有问题,一切都很好,给我crrect json文件。但是当我在Windows中尝试时,resquest失败了(告诉我url不存在)。 使用urllib2的windows中的汉字有问题吗 windows的版本是7,ubuntu 12.4。我使用的是python 2.7 谢谢 Marcos您应该对查询进行URL编码: # -*-

我正在用python做一张小纸条。目标是向返回Json文件的页面发出请求,并处理该信息。问题是我需要在URL中使用中文单词。当我提出请求时(例如):

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

windows的版本是7,ubuntu 12.4。我使用的是python 2.7

谢谢


Marcos

您应该对查询进行URL编码:

# -*- 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)
# ...

谢谢你的回答!我试过你以前说的方法,但我还是有同样的问题。当我在Ubuntu中测试时,请求给了我json文件,但在windows中,我说没有结果。我使用中文的相同方向进行测试。@user3162595:确保模块顶部的编码声明正确:
print(params)
应该在地址中显示预期的Unicode代码点(它必须与Linux上的输出相同(忽略参数顺序))。我在顶部有编码声明。例如,当我使用此地址值u'中国江苏常州市武进区政平乡武进市禹城村' 在windows和linux中,在dict中,我打印参数给我这个输出{'sensor':'false','address':'\xd6\xd0\xb9\xfa\xbd\xcb\xd5\xb3\xa3\xd6\xdd\xca\xd0\xce\xe4\xbd\xf8\xfe\xf6\xbd\xbd\xcd\xb8\xca\xd0\xd3\xb3\xb3\xb7\xb4\xe5\n'}。但是请求的结果是不同的,在一个请求中,我正确地获得了json文件,而在windows中是空的。@user3162595:您可能忘记了
u'
前缀<代码>地址应该是Unicode字符串:
{'sensor':'false','address':u'\u4e2d\u56fd…}
当我阅读打开文件的代码部分时,我意识到我使用的是公共open而不是codecs.open。谢谢大家!
# -*- 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)
# ...