Интерфейс Python к PayPal - urllib.urlencode сбой символов неASCII

Вы можете использовать className и искать имя класса, содержащее вашу подстроку

let subclass = 'my-class-no-';

$('[class*="'+subclass+'"]').each(function() {
  let name = this.className.split(' ').find((className) => {
    return className.indexOf(subclass) !== -1;
  });

  console.log(name);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="anotherclass my-class-no-1 onemoreclass">
  <div>

20
задан Krystian Cybulski 25 April 2009 в 00:24
поделиться

3 ответа

Попробуйте сначала преобразовать словарь параметров в utf-8 .. Кажется, что urlencode нравится лучше, чем юникод:

params = urllib.urlencode(dict([k, v.encode('utf-8')] for k, v in params.items()))

Конечно, это предполагает, что вы вводите Unicode. Если ваш ввод отличается от Unicode, вам нужно сначала декодировать его в Unicode, а затем кодировать:

params['foo'] = my_raw_input.decode('iso-8859-1')
params = urllib.urlencode(dict([k, v.encode('utf-8')] for k, v in params.items()))
41
ответ дан 29 November 2019 в 23:17
поделиться

Вместо кодировки в utf-8, нужно кодировать в то, что использует paypal для почты. Она доступна под ключом 'charset' в форме, которую присылает paypal.

Так что следующий код сработал:

data = dict([(k, v.encode(data['charset'])) for k, v in data.items()])

6
ответ дан 29 November 2019 в 23:17
поделиться

Я знаю, что уже немного поздно вмешиваться, но лучшее решение, которое я нашел, - это даже не анализировать то, что они возвращают.В django (не знаю, что вы используете) мне удалось получить необработанный запрос, который они отправили, который я передал дословно. Тогда оставалось просто поставить на это ключ cmd.

Таким образом, не имеет значения, в какой кодировке они вам отправляются, вы просто отправляете их обратно.

3
ответ дан 29 November 2019 в 23:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: