Я знаю про нестандартну схему% uxxxx, але це не здається мудрим вибором, оскільки W3C цю схему було відхилено.
Кілька цікавих прикладів:
Характер серця. Якщо я введіть це у свій браузер:
http://www.google.com/search?q=♥
Потім скопіюйте та вставте, я бачу цю URL-адресу
http://www.google.com/search?q=%E2%99%A5
завдяки чому здається, що це робить Firefox (або Safari).
urllib.quote_plus(x.encode("latin-1"))
'%E2%99%A5'
що має сенс, за винятком речей, які не можуть бути закодовані латиною-1, як символ трійкової крапки.
…
Якщо я введу URL-адресу
http://www.google.com/search?q=…
у свій браузер потім копіюю та вставляю, я отримую
http://www.google.com/search?q=%E2%80%A6
назад. Який, здається, результат виконання
urllib.quote_plus(x.encode("utf-8"))
що має сенс, оскільки ... не може бути закодовано з латинською-1.
Але тоді мені не зрозуміло, як браузер знає, чи потрібно розшифровувати UTF-8 або Latin-1.
Оскільки це здається неоднозначним:
In [67]: u"…".encode('utf-8').decode('latin-1')
Out[67]: u'\xc3\xa2\xc2\x80\xc2\xa6'
працює, тому я не знаю, як браузер з'ясовує, чи розшифровувати це за допомогою UTF-8 або Latin-1.
Що правильно робити з особливими персонажами, з якими мені потрібно мати справу?