Кодировка символов Python с помощью urllib.quote - PullRequest
19 голосов
/ 21 июня 2011

Я пытаюсь кодировать не-ASCII символы, чтобы я мог поместить их в URL и использовать их в urlopen. Проблема в том, что мне нужна кодировка, подобная JavaScript (например, кодирующая ó как %C3%B3):

encodeURIComponent(ó)
'%C3%B3'

Но urllib.quote в python возвращает ó как %F3:

urllib.quote(ó)
'%F3'

Я хочу знать, как получить кодировку, такую ​​как javascript encodeURIComponent в Python, а также можно ли кодировать символы, отличные от ISO 8859-1, например, китайский. Спасибо!

Ответы [ 2 ]

29 голосов
/ 22 июня 2011

Вы хотите убедиться, что используете юникод.

Пример:

import urllib

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

Выходы:

%C3%B3

8 голосов
/ 02 августа 2018

in Python 3 urllib.quote был переименован в urllib.parse.quote.

Также в Python 3 все строки являются строками Unicode (байтовые строки называются bytes).

Пример:

from urllib.parse import quote

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