POST из Flash (AS2) в PHP, выводит ???когда используются не английские символы - PullRequest
1 голос
/ 07 февраля 2011

Я пытаюсь использовать POST во Flash (ActionScript 2), чтобы передать значения POST в почтовый скрипт PHP. Я попробовал почтовый скрипт PHP с HTML-формой, и он отлично работал.

Но когда я POST из флэш-памяти и ввода не английских символов, я получаю «????» по почте.

Я пытался utf8_encode($_POST["name"]), но это не помогает.

Edit:

Я также пытался utf8_decode($_POST["name"]), это не сработало.

Обновление: (Таким образом, вам не нужно просматривать все комментарии)

  1. Я проверил переменные во Flash, значения сохранены правильно.
  2. HTML-страница, на которой встроен Flash, имеет кодировку UTF-8.
  3. Я смотрел POST-заголовки с FireBug, сам POST уже испорчен, показывая «????» вместо реальной стоимости.
  4. Запутанное "????" значение, в настоящее время URL-кодируется flash и декодируется PHP, в результате чего $_POST["name"] == "???";

Я подозреваю, что метод sendAndLoad создает беспорядок.

Обновление:

Вот код вспышки:

System.useCodepage = true;
send_btn.onRelease = function() {
   my_vars = new LoadVars();
   my_vars.email = email_box.text;
   my_vars.name = name_box.text;
   my_vars.family_box = comment.text;
   my_vars.phone = phone_box.text;

if (my_vars.email != "" and my_vars.name != "") {
    my_vars.sendAndLoad("http://aram.co.il/ido/sendMail.php", my_vars, "POST");
    gotoAndStop(2);
} else {
    error_clip.gotoAndPlay(2);
}
my_vars.onLoad = function() {
    gotoAndStop(3);
};
};

    email_box.onSetFocus = name_box.onSetFocus=message_box.onSetFocus=function () {
if (error_clip._currentframe != 1) {
    error_clip.gotoAndPlay(6);
}
};

Ответы [ 2 ]

1 голос
/ 08 февраля 2011

Если вы получаете данные из флэш-памяти, вам нужно использовать utf8_decode, а не utf8_encode.

Flash использует UTF8 - до тех пор, пока вы не скажете ему использовать локальный набор символов. И вы хотите, чтобы PHP расшифровал это до старого доброго ISO-8859-1, который PHP использует внутри.

Вы будете использовать utf8_encode только при подготовке данных для flash.

1 голос
/ 07 февраля 2011

Flash все равно использует UTF8-кодировку для всех строк.Если вы используете LoadVars , передача в виде строки с кодировкой urlen также должна работать автоматически.

Таким образом, ваша проблема, скорее всего, связана с PHP-частью вашего приложения.Например, для правильной работы UTF8 все отдельные файлы PHP должны быть также сохранены в формате в кодировке UTF8.

Если простое изменение кодировки файла не работает, попробуйте сначала выполнить синтаксический анализ $ HTTP_RAW_POST_DATA , проверьте, все ли поля были перенесены правильно, затем продолжайте и повторяйте свой путь, пока не найдетеместо, где теряется кодировка.

Обновление:

Вот ваша проблема: вы используете System.useCodePage = true;.Это требует от вас специально кодировать все ваши данные как Unicode перед отправкой .Если у вас нет других документов в других кодировках и / или вы не разрешаете своим пользователям загружать свои собственные текстовые данные с их локализованными кодировками, установите System.useCodePage = false;, и ваша проблема utf8 должна исчезнуть.

...