Как открыть URL без аргументов utf-8
При использовании Python мне нужно передавать данные, не закодированные в utf-8 (в частности, shift-jis), в URL через строку запроса. Как я должен передать данные? Цитировать это? Кодировать в utf-8?
Спасибо
3 ответа
Параметры строки запроса основаны на байтах. В то время как символы IRI-to-URI и напечатанные символы не ASCII обычно используют UTF-8, ничто не заставляет вас отправлять или получать ваши собственные параметры в этой кодировке.
Так для Shift-JIS (на самом деле обычно это cp932, расширение Windows для этой кодировки):
foo= u'\u65E5\u672C\u8A9E' # 日本語
url= 'http://www.example.jp/something?foo='+urllib.quote(foo.encode('cp932'))
В Python 3 вы делаете это в самой функции цитаты:
foo= '\u65E5\u672C\u8A9E'
url= 'http://www.example.jp/something?foo='+urllib.parse.quote(foo, encoding= 'cp932')
Под строкой запроса вы подразумеваете HTTP GET, как в http:/{URL}?data=XYZ
?
У вас есть кодирование любых данных, которые вы имеете через base64.b64encode
с помощью -_
как альтернативный символ, чтобы URL был безопасным в качестве опции. Смотрите здесь.