Отправка списка через URL - PullRequest
2 голосов
/ 10 марта 2010

У меня есть список, который мне нужно отправить через URL стороннему поставщику.Я не знаю, какой язык они используют.

Список распечатывается так:

[u'1', u'6', u'5']

Я знаю, что вы кодируете строку в utf-8, верно?Итак, пара вопросов.

Можно ли отправить список через URL?Будут ли вы отображаться на другом конце при просмотре URL?Если да, то как мне их удалить?

Я не уверен, какие ключевые слова искать, чтобы помочь мне, поэтому любые ресурсы также будут полезны.

Ответы [ 3 ]

4 голосов
/ 10 марта 2010

Можно ли отправить список через URL?

Нет. URL это просто текст. Если вам нужен способ упаковать структурированную информацию в него, вы должны согласиться с поставщиком, с которым вы разговариваете.

Одна стандартная кодировка для структуры в URL, которая может или не может быть тем, что вам нужно, - это использование нескольких параметров с одним и тем же именем в строке запроса. Этот формат основан на представлении формы HTML:

http://www.example.com/script?par=1&par=6&par=5

может рассматриваться как параметр par со списком из трех элементов в качестве значения. Или, может быть, нет, это зависит от получателя. Например, в приложении PHP вам нужно было бы назвать параметр par[], чтобы он принял значение массива.

Я знаю, что вы кодируете строку в utf-8, верно?

Нет. u'...' строка является нативной строкой Unicode, где каждый индекс представляет собой целый символ, а не байт в какой-либо конкретной кодировке. Если вам нужны байты UTF-8, напишите u'...'.encode('utf-8') перед URL-кодированием. UTF-8 является хорошим выбором по умолчанию, но, опять же, то, что требуется кодирующей стороне, зависит от этого приложения.

Появятся ли вы на другом конце при просмотре URL?

u является частью буквального представления строки, так же, как сами кавычки '. Они не являются частью строкового значения и не будут отображаться print или при объединении в другие строки, если только вы не умышленно попросили литеральное представление, вызвав repr.

1 голос
/ 10 марта 2010

u'' - это не utf-8, его строки юникода python для python 2.x

Чтобы отправить его через URL-адрес, вам необходимо закодировать его с помощью utf8, например .encode('utf-8'), а также urlencode, и list не может отправить его через URL-адрес, вам нужно сделать это как строку.

По сути, вам нужно сделать это в следующих шагах

список питонов -> строка в кодировке Юникод -> строка utf8 -> кодировка URL -> отправить его через правильный URL-адрес API

0 голосов
/ 10 марта 2010

Неправильно. литералы unicode используют внутреннюю кодировку Python, определенную при компиляции.

Вы не можете отправлять что-либо "через" URL. Выберите протокол вместо этого. И кодировать перед отправкой, вероятно, в UTF-8.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...