Python PYCURL获取一个带有utf-8编码问题的json文件

Python PYCURL获取一个带有utf-8编码问题的json文件,python,utf-8,pycurl,Python,Utf 8,Pycurl,我的PYCURL请求有问题。 服务器上的json文件以utf-8编码,如下所示: { "address" : "123 rue de Labège" } 我使用PYCURL获取这个json并将其复制到我计算机上的一个新文件中。 我使用Python 2.7,下面是我对PYCURL的设置: def setup(self, _url, _method, _login, _passwd, _path, *args, **kwargs): self.curl = pycurl.Curl()

我的PYCURL请求有问题。 服务器上的json文件以utf-8编码,如下所示:

{
  "address" : "123 rue de Labège"
}
我使用PYCURL获取这个json并将其复制到我计算机上的一个新文件中。 我使用Python 2.7,下面是我对PYCURL的设置:

def setup(self, _url, _method, _login, _passwd, _path, *args, **kwargs):
    self.curl = pycurl.Curl()
    self.url = 'https://%s:%d/' % (self.ip, self.port) + _url
    self.method = _method
    self.userpwd = '%s:%s' % (_login, _passwd)
    self.path = _path

    self.curl.setopt(pycurl.URL, self.url)

    curl_method = {
        "GET": pycurl.HTTPGET,
        "POST": pycurl.POST
    }

    if self.method in curl_method:
        self.curl.setopt(curl_method[self.method], 1)
    else:
        self.curl.setopt(pycurl.CUSTOMREQUEST, self.method)

    self.curl.setopt(pycurl.SSL_VERIFYPEER, 0)
    self.curl.setopt(pycurl.SSL_VERIFYHOST, 0)
    self.curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_BASIC)
    self.curl.setopt(pycurl.USERPWD, self.userpwd)

    if _url == 'MY_FILE_JSON':
        filename = 'file.json'
        self.file = open(self.path + filename, 'wb')
        self.curl.setopt(pycurl.WRITEDATA, self.file)
问题出在我得到的文件中:

{
  "address" : "123 rue de Lab\u00e8uge"
}
我不明白为什么PYCURL将我的“è”编码为\u00e8。
setopt和PYCURL是否有任何选项可以强制它打印好的字符

实际上这是完全正确的,一旦您对变量属性执行了
打印
,您就可以看到它打印得很好

这就是Python内部处理Unicode字符串的方式。一旦PycURL接收到该文件,它将被转换为适合该属性的任何类型。在您的例子中,这是一个Unicode字符串

查看更多信息

因此,概括一下,如果您这样做:

>>> test = u'123 rue de Lab\u00e8uge'
>>> print(test)
123 rue de Labèuge

在这里,你可以看到我创建了一个Unicode字符串(从
u
开始)。

好吧,我知道如何在脚本中很好地打印它,但我不知道如何直接通过pycurl请求获得带有gode编码的文档;文档已采用正确的编码。你想做什么,你认为哪里出了问题?好吧,我明白了!这就是json文件中特殊字符的编码方式,但对于用户来说,它是透明的。谢谢你没问题,玩得开心!