2011-02-07 8 views
6

"Misère"のような外国の名前をエンコードする必要があります。アクセントを正しくURLにエンコードする方法は?

私が行うと:

urllib2.quote(name) 

が、私はエラーを取得する:

File "/System/Library/Frameworks/Python.framework/Versions/ 
2.5/lib/python2.5/urllib.py", line 1205, in quote 
    res = map(safe_map.__getitem__, s) 
KeyError: u'\xe8' 

は私が間違って何をしているのですか?

答えて

12

@にトライurllib2.quote(s.encode( 'UTF8'))

+1

ありがとうございました! –

0

若干の改善苏妍倩の答えは、メソッド呼び出しで安全な文字を含めることであろう。デフォルトでは、urllib2.quote()は _-.のみを安全な文字として含むため、:のような文字は変換され、URLは役に立たなくなります。例えば

:URLのHTTPS部分における出力のわずかな差

url = https://www.zomato.com/pittsburgh/caffè-damore-catering-pittsburgh 
print urllib2.quote(url.encode('utf-8')) 
>>> https%3A//www.zomato.com/pittsburgh/caff%C3%A8-damore-catering-pittsburgh 

print urllib2.quote(url.encode('utf-8'),':/') 
>>> https:////www.zomato.com/pittsburgh/caff%C3%A8-damore-catering-pittsburgh 

注意。

これは、これが私にこれを理解するのにかかった時間を他の人に節約してくれることを願っています!

関連する問題