2016-12-08 4 views
0

이 같은 requests 파이썬 확장으로 URL http://example.com/?param=%DD%CC%C0-15의이 종류를 얻으려고 노력 :파이썬 (요청) 인코딩 문제 (UTF-8 - CP1251)

group = "ЭМА-15".encode('cp1251') 
r = requests.get('http://example.com/?param=' + group) 
r.encoding = "cp1251" 

(사이트 창-1251 (CP1251와 함께 작동하기 때문에) 인코딩)

그리고 오류가 발생하는 행 2 : UnicodeDecodeError: 'utf8' codec can't decode byte 0xdd in position 82: invalid continuation byte 그러나이 바이트 시퀀스 (0xDD (% DD) ...)는 필자에게 필요한 것입니다. 어떻게 해결할 수 있습니까?

+1

A는 내 대답을 찾아 보게하세요. –

답변

1

두 가지가 있습니다. 1. 파이썬 인터프리터는 소스에서 "ЭМА-15"문자열의 인코딩을 알아야합니다. 2. 쿼리 매개 변수는 일반적으로 requests으로 처리되지만 URL을 수동으로 구성하기 때문에 직접 인용해야합니다.

# -*- coding: utf-8 -*- 
import urllib 
import requests 

group = u"ЭМА-15".encode('cp1251') 
param = urllib.quote_plus(group) 
print(param) 
r = requests.get('http://example.com/?param=' + param) 

출력

%DD%CC%C0-15 
+0

나는 그런 대답을 기다리고있었습니다. 고마워. –

1

난 당신이 cp1251 문자를 표시하려고하지만 편집기는 ASCII 범위 밖에있는 소스 파이썬 파일에서 문자를 변환하는 파이썬 인터프리터 만 사용 coding: cp1251utf8를 사용하도록 구성되어 같아요. 시도 :

group = "ЭМА-15".decode('utf8').encode('cp1251') 
r = requests.get('http://example.com/?param=' + group) 
r.encoding = "cp1251" 

내 터미널에서 실행

>>> "ЭМА-15".decode('utf8').encode('cp1251') 
'\xdd\xcc\xc0-15' 
+0

아니요, 성공적으로 인쇄됩니다. 문제는 요청 기능에 있습니다. –