Я пытаюсь исправить свою страницу автоматического возврата, чтобы создать лицензию на основе имени для некоторого программного обеспечения. У меня работает PDT, и он возвращает мне данные. Однако информация об имени была преобразована в кодировку, отличную от Unicode, и уничтожена.

Мои тестовые данные - это пользователь в песочнице с японским именем. Я пытаюсь запустить транзакцию от имени этого пользователя и вернуть это:

last_name=%1A%1A
first_name=%1A%1A

В ответе PDT. По иронии судьбы PayPal сообщает о типе контента как utf-8:

Content-Type: text/html; charset=UTF-8

Ага, нет. Имя тестового пользователя на самом деле: 木 家 寿司. Просто несколько случайных японских иероглифов.

Мой HTTP-запрос в основном:

    if ($method == "POST")
        $r = "POST $usepath HTTP/1.1\r\n";
    else
        $r = "GET $usepath HTTP/1.1\r\n";

    $r .=   "Host: $host\r\n" .
            "User-Agent: $ua\r\n" .
            "Connection: close\r\n" .
            "Accept-Charset: utf-8\r\n" .
            "Accept: */*\r\n" .
            "Accept: image/gif\r\n" .
            "Accept: image/x-xbitmap\r\n" .
            "Accept: image/jpeg\r\n";

    if ($method == "POST")
    {
        $strlength = strlen($postdata);

        $r .=   "Content-type: application/x-www-form-urlencoded\r\n" .
                "Content-length: $strlength\r\n".
                "\r\n" .
                $postdata;
    }

Следует отметить, что я установил для Accept-Charset значение utf-8. Я также попытался установить тип содержимого, чтобы включить utf-8 в качестве кодировки. А также указать "charset = utf-8" в самих полях формы.

Похоже, что PDT просто не работает, когда дело доходит до Unicode. Или я тут что-то не так делаю?

Изменить: Да, это решается здесь.

1
fret 23 Сен 2018 в 10:52

1 ответ

Лучший ответ

Поскольку я не могу закрыть это как дубликат, я отправлю фактический ответ для потомков.

В вашем профиле PayPal в разделе «Мои инструменты продаж» есть Кодирование языка кнопок PayPal . Что в моем случае я установил на utf-8 (действительно, что еще вы хотели бы использовать?)

Они должны по умолчанию использовать utf-8. Они также должны соблюдать кодировку ввода. Им нужно много чего делать ... но они PayPal.

0
fret 10 Окт 2018 в 00:55