2013-02-21 2 views
0

파이썬에서 urlenconing으로 유니 코드를 인코딩하는 방법 2.7파이썬 2.7에서 urlenconing으로 유니 코드를 인코딩하는 방법은 무엇입니까?

유니 코드를 '€'와 같이 인코딩하려고합니다.

그러나 나는 내가 무엇을해야 konw하지 않습니다는 ...

>>> u='€' 
>>> _u=u'€' 
>>> u 
'\xa2\xe6' 
>>> _u 
u'\u20ac' 
>>> urllib.quote(u) 
'%A2%E6' 
>>> urllib.quote(_u) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "C:\Python27\lib\urllib.py", line 1268, in quote 
    return ''.join(map(quoter, s)) 
KeyError: u'\u20ac' 
>>> print urllib.unquote(urllib.quote(u)) 
€ 
>>> 

그냥 유니 코드 '€'를 통해 '%의 A2의 %의 E6'를해야합니다.

어떻게해야합니까?

>>> print urllib.unquote(urllib.quote(u'€'.encode('utf8'))) 
? 
+0

utf-8로 인코딩하면 모든 것이 잘됩니다. http://stackoverflow.com/questions/5557849/is-there-a-unicode-ready-substitute-i-can-use-for-urllib-quote-and-urllib-unquot – fanlix

+0

감사합니다 @fanlix, 그리고 읽었습니다. 귀하의 링크. 그러나 나는 아직도 모른다. 이 링크는 encode()를 사용한다고 말합니다. 그래서 나는 그것을 시도했다. 상기 참조하십시오. – chobo

답변

0

당신은 encode 유니 코드 문자열 다음 urllib.quote를 사용해야합니다. 자신이 질문에 대한 답변을 작성했습니다.

urllib.quote(u'€'.encode('utf8')) 
+0

감사합니다. 당신의 대답은 좋습니다. 하지만 'urllib.unquote ('% E2 % 82 % AC ')'% E2 % 82 % AC '를 반환합니다. 그리고 'urllib.unquote ('% E2 % 82 % AC '') 'return'? ' – chobo

+0

내 컴퓨터 스크립트에서 올바른 결과를 출력합니다 :'€'. 당신의 문제는 "나쁜"stdout 인코딩일까요? 다음 코드를 실행 해보십시오 :'urllib.unquote (urllib.quote (u '€'.encode ('utf8'))). decode ('utf8')' –

관련 문제