web-dev-qa-db-ja.com

Python urllib.quoteで文字をエンコードする

非ASCII文字をエンコードして、URL内に配置してurlopenで使用できるようにしています。問題は、JavaScriptのようなエンコードが必要なことです(たとえば、ó%C3%B3としてエンコードします)。

encodeURIComponent(ó)
'%C3%B3'

しかし、pythonのurllib.quoteは、ó%F3として返します。

urllib.quote(ó)
'%F3'

PythonでJavaScriptのencodeURIComponentのようなエンコーディングを実現する方法、および中国語のようなISO 8859-1以外の文字をエンコードできるかどうかを知りたいです。ありがとう!

22
Saulpila

ユニコードを使用していることを確認したい。

例:

import urllib

s = u"ó"
print urllib.quote(s.encode("utf-8"))

出力:

%C3%B3

29
Bryan

Python 3では、urllib.quoteurllib.parse.quote に名前が変更されました。

また、Python 3では、すべての文字列はUnicode文字列です(バイト文字列は bytes と呼ばれます)。

例:

from urllib.parse import quote

print(quote('ó'))
# output: %C3%B3
17
Messa