При использовании Python мне нужно перенести данные, не закодированные в utf-8 (особенно shift-jis), в URL через строку запроса. Как я должен передать данные? Цитировать это? Кодировать в utf-8?
Спасибо
Параметры строки запроса основаны на байтах. В то время как символы 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')
Я не знаю, при чем здесь юникод, поскольку строка запроса представляет собой строку байтов. Вы можете использовать функции цитирования в urllib , чтобы заключать простые строки в кавычки, чтобы их можно было передавать в строках запроса.
Под «строкой запроса» вы подразумеваете HTTP GET, как в http:/{URL}?data=XYZ?
http:/{URL}?data=XYZ
Вы кодируете все свои данные через base64.b64encode, используя -_ в качестве альтернативного символа, чтобы URL-адрес был безопасным в качестве опции. Смотри здесь .
base64.b64encode
-_