Документация AS3 гласит, что строки в AS3 имеют формат UTF-16.
На Flash-клипе есть текстовое поле, в котором пользователь может вводить некоторые данные.
При нажатии кнопки,Я хочу, чтобы эти данные были отправлены в php-скрипт.
У меня все настроено, но кажется, что PHP-скрипт получает данные в формате UTF-16.Данные в базе данных (то есть utf-8) показывают некоторые неузнаваемые символы (где используются специальные символы), что означает, что данные не были отправлены в правильной кодировке.
var variables:URLVariables=new URLVariables;
var varSend:URLRequest=new URLRequest("http://website.com/systematic/accept.php");
varSend.method=URLRequestMethod.POST;
varSend.data=variables;
var varLoader:URLLoader=new URLLoader;
varLoader.dataFormat=URLLoaderDataFormat.VARIABLES;
varLoader.addEventListener(Event.COMPLETE, completeHandler);
Когда кнопка отправкипри щелчке запускается следующий обработчик.
function sendData(event:MouseEvent) : void {
// i guess here is the problem (tbName.text is UTF-16)
variables.name = tbName.text;
varLoader.load(varSend);
}
Можно ли отправить данные таким образом, чтобы скрипт PHP получал данные в формате UTF-8?
(скрипт PHP извлекаетзначение с использованием $ _POST ['name']).
EDIT (после полезных комментариев):
Я пытался преобразовать переменную POST вUTF-8 с помощью iconv (), но я получаю только вопросительные знаки.Это может означать, что я ошибался, предполагая, что php получил строку в формате UTF-16.Кажется нет.Но теперь я абсолютно не знаю, как это исправить.
Указанные символы - хорватские (č, ć, š, ž и đ), все они в кодировке Windows-1250.Если я вручную отредактирую запись в phpMyAdmin и введу любой из этих символов, все отлично работает.Но если я делаю это через flash, это не сработает.
Еще одна странная вещь: я удалил iconv и поместил все так, как было в начале, и теперь только не специальные символы отображаются первымихорватский.Например, если я напишу «ačasdfadfa», в базе данных будет храниться только «a».
Другое редактирование:
Я попыталсяпереключите хорватские символы во что-то ASCII (см. код ниже), а затем верните их в č, ć и т. д. на стороне PHP.Очевидно, что Flash перенаправляет это право (поскольку больше нет специальных символов), но PHP неправильно преобразовывает символы обратно в строку.Это то, что я делал.
http://pastebin.com/qjVcrNuV
, поэтому я думаю, что это что-то с PHP или как он хранит данные в базе данных.Сам файл PHP имеет кодировку UTF-8.