Я пытаюсь исправить свою страницу автоматического возврата, чтобы сгенерировать лицензию на основе имени для некоторого программного обеспечения.У меня работает 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 просто сломан, когда дело доходит до юникода.Или я здесь что-то не так делаю?
Редактировать: Бах, это решено здесь .