Передача переменных GET из Flash в PHP с китайскими символами - PullRequest
3 голосов
/ 07 апреля 2010

Я вызываю php-файл из Flash и добавляю переменные потом так: http://www.randomwebsite.com/something.php?title=爸爸

Это прекрасно работает, если я скопирую и вставлю это прямо в веб-браузер, однако если я вызову его через flash, адресная строка будет выглядеть так:

Могу ли я что-нибудь сделать из PHP или flash для кодирования / декодирования строки? Любая помощь с благодарностью.

Спасибо, Будет

EDIT: Спасибо, ребята, этот метод работал отлично. Все хорошо, но теперь у меня возникли проблемы с вставкой информации в базу данных через MySQL, все мои поля установлены в UTF-8. Я получаю некоторые странные символы вместо китайских символов.

Большое спасибо, Будет

Ответы [ 5 ]

3 голосов
/ 07 апреля 2010

Вам необходимо URL-кодировать параметры, которые вы вводите в строку запроса.В то время как IRI могут содержать литерал , URI не могут.Он должен быть закодирован как %E7%88%B8.(Как правило, он по-прежнему отображается в адресной строке как , за исключением некоторых случаев в IE.)

encodeURIComponent() - это функция, которая выполняет это в JavaScript / ActionScript.

1 голос
/ 07 апреля 2010

Если у вас возникают проблемы при вставке в базу данных, вам необходимо убедиться, что все, что участвует в этом процессе, является utf8. Если вы проверили свой запрос в phpmyadmin и он работает нормально, я бы предложил добавить следующий запрос в ваш скрипт php:

mysql_query("SET character_set_client=utf8", $connection);
mysql_query("SET character_set_connection=utf8", $connection);
0 голосов
/ 07 апреля 2010

На самом деле доступно несколько функций кодирования / декодирования url (в as3). Каждый немного отличается от другого.

Проверьте это:

выше взято из справочника flex, я предполагаю, что они также будут доступны в CS.

0 голосов
/ 07 апреля 2010

Вам нужно URL-кодировать символов (используемый вами браузер, вероятно, сделает это автоматически). Это используется для разрешения передачи символов, которые обычно не разрешены в URL (например, пробелы) или имеют специальное значение (например, '?' и '&').

Поскольку используемые вами символы не являются стандартными ASCII, они должны быть закодированы как Unicode. Это делается автоматически для вас при вызове функции encodeURIComponent() верхнего уровня во Flash и приводит к вводу нескольких символов% xx на символ Unicode.

0 голосов
/ 07 апреля 2010

См. Rfc1738 2.2 (http://www.faqs.org/rfcs/rfc1738),, вам нужно закодировать вашу строку. Я не знаю, как это сделать во Flash, но PHP предоставляет вам функции (raw-) urlencode () и (raw-) urldecode () для этого.

...