2013-08-10 2 views
4

나는 파이썬이 나를 인코딩 된 문자열을 얻도록 노력하고있다. 상호 작용하는 API (UTF-8 인코딩 된 퍼센트 사용)는 %에 대해 % c3 % ae를 제공합니다. 그러나, 파이썬의 urllib.quote는 % 3F를 제공합니다.인코딩 및 파이썬 UTF-8 비율

import urllib 

mystring = "î" 
print urllib.quote(mystring) 
print urllib.quote_plus(mystring) 
print urllib.quote(mystring.encode('utf-8')) 

도움을 주시면 감사하겠습니다.

+0

나는 당신의 코드를 실행했으며,'% C3 % AE'를 출력합니다. '% 3F', btw는'?'char로 인코딩됩니다. – alecxe

답변

4

파일을 인용하기 전에 문자열을 utf-8으로 인코딩해야하며 문자열은 유니 코드 여야합니다.

%C3%AE 
+0

나는 아직도 % 3F을 얻는다 – user1379351

+0

당신의 스크립트가'utf-8'으로 인코딩 된 파일로 저장 되었습니까? –

+0

아니요, ANSI에있었습니다. 감사! – user1379351

1

당신이 당신의 파일이 인코딩을 선언하지 않을 때문입니다 :

# -*- coding: utf-8 -*- 

import urllib 

s = u'î' 
print urllib.quote(s.encode('utf-8')) 

나에게 출력을 제공합니다 : 또한 당신은 coding 섹션에서 소스 파일에 대해 적절한 파일 인코딩을 지정해야 using을 사용하므로 파이썬은 현재 locale 구성에서 그것을 유추합니다. 나는이 작업을 수행하는 것이 좋습니다 것입니다 :

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

mystring = "î" 
print urllib.quote(mystring) 
print urllib.quote_plus(mystring) 

또한 file.pyutf-8 인코딩으로 디스크에 저장지고 있는지 확인하십시오.

나를 위해 그 수익률 :주의의

$python ex.py 
%C3%AE 
%C3%AE 

커플. 인터프리터에서 이것을 시도하는 경우 콘솔 인코딩이 utf-8이 아닌 경우 # -*- coding: utf-8 -*-이 작동하지 않습니다. 대신 콘솔에서 사용중인 인코딩으로 변경해야합니다 (# -*- coding: (encoding here) -*-).

mystring = "î".decode('<your encoding>') 

을 그리고 나중에 utf-8로 인코딩 urllib에 전달 :

그런 다음 인수로 사용 decode 방법을 사용하고 그것에게 인코딩 이름 콘솔을 전달 Unicode로 문자열을 디코딩한다

print urllib.quote(mystring.encode('utf-8')) 
print urllib.quote_plus(mystring.encode('utf-8')) 

희망이 도움이됩니다.

+0

감사합니다. 파일이 ANSI이므로 문제가 발생했습니다. – user1379351

+0

좋습니다! 좋아, 당신은 그것을 해결할 수 :) –