2016-09-30 1 views
1

내 PYCURL 요청에 문제가 있습니다. 서버에서 내 JSON 파일은 UTF-8로 인코딩과 같이됩니다 : PYCURL이 utf-8 인코딩 문제가있는 json 파일을 가져옵니다

{ 
    "address" : "123 rue de Labège" 
} 

나는 PYCURL이 JSON을 얻기 위해 사용하고 내 컴퓨터에 새 파일에 복사합니다. 내가 여기 파이썬 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) 

문제는 내가지고있어 파일에 있습니다 PYCURL 내 "E"를 암호화하는 이유

{ 
    "address" : "123 rue de Lab\u00e8uge" 
} 

이해가 안 \ u00e8로. 좋은 문자를 인쇄하도록 PYCURL과 함께 setopt 옵션이 있습니까?

답변

2

사실 이것은 완전히 맞습니다. 일단 변수 속성 print을 실행하면 잘 인쇄되는 것을 볼 수 있습니다.

이것은 파이썬이 내부적으로 유니 코드 문자열을 처리하는 방법입니다. PycURL이 파일을 수신하면 속성에 적합한 유형으로 변환됩니다. 귀하의 경우 이것은 유니 코드 문자열입니다.

자세한 내용은 this article을 확인하십시오. 그래서 요점을 되풀이

, 당신이 할 경우 :

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

당신은 내가 유니 코드 문자열합니다 (u로 시작)를 참조 할 수 있습니다.

+0

괜찮 았어. 내 스크립트에서 잘 인쇄하는 법은 알고 있지만 pycurl 요청을 직접 사용하여 코드를 인코딩하는 방법을 모른다. – kidz55

+0

그게 사실이야. 문서가 이미 올바른 인코딩으로되어 있습니다. 당신이하려고하는 것은 무엇입니까? 어디에서 잘못되고있는 것 같습니까? –

+0

알겠습니다. 특수 문자가 json 파일에서 인코딩되는 방식이지만 사용자에게는 투명합니다. 감사합니다. – kidz55