Просмотр полной версии : Кодировка Flex-PHP-MySQL
Здравствуйте, знаю что такие темы уже здесь были, но в них я ответа не нашел - может потому что мало в этом разбираюсь.
Ситуация такая - есть DataGrid в которой нужно просто отобразить строки из таблицы БД, управляемой через phpMyAdmin. Юзаю HTTPService.
И в phpMyAdmin для базы установлен utf8_unicode_ci и в mxml прописан encoding="utf-8", однако на выходе из кириллицы получаются иероглифы. Как мне заставить эту **** отображать нормально?
А где вы его там в MXML прописали? Вам в PHP надо или конвертировать iconver'ом или если есть установленая библиотека mb_string сразу весь буфер перевести в мультибайт. Единственное что, либо я не понял как, либо это так по задумке авторов, DOMDocument в PHP упорно старается вместо юникодов их в HTML entities перевести, так что лучше использовать SimleXML если вы не просто строки формируете, а работаете с XML'ем.
<?xml version="1.0" encoding="utf-8"?> - хотя это я так понимаю относиться только к xml. Пытался разобраться с iconver'ом и найти mb_string - ни то, ни другое не получилось, видимо потому что с программированием на php мало знаком.
Однако, как всегда получилось всё сделать через заднее место - при добавление новой записи через запрос отправленный из flex'a в php, он почему-то возвращает в datagrid нормальные слова, но при этом в БД они отображаются в виде абракадабры))
Ну эта запись в MXML вообще ни на что не влияет. Она просто для информации о том, в какой кодировке надо читать документ, но большинство програм ее просто игнорируют. А вообще кодировка MXML на работе програмы никак отразится не может, MXML это просто шаблон по которому генерится AS класс, а из него уже компилируется флешевый байткод. PHPMyAdmin просто скорее всего все выводит как ANSI.
у меня сейчас такая же проблема. строки в баке по русски, а в DataGrid стоят "???? ???????". я не понял, что сделал автор темы, что у него получилось видеть русский текст?
GregoryR
20.08.2010, 09:56
у меня сейчас такая же проблема. строки в баке по русски, а в DataGrid стоят "???? ???????". я не понял, что сделал автор темы, что у него получилось видеть русский текст?
Автор темы, так же как и я похоже забил на это, т.к. при отправке данных из flex приложения и потом прочтения их же в этом же flex приложении данные отображаются корректно.
Правда если заглянуть в mySQL базу через другие программы, там будет абракадабра.
Astraport
20.08.2010, 11:45
$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
mysql_query("SET SESSION collation_connection = 'utf8_general_ci';");
mysql_select_db(DATABASE_NAME);
GregoryR
20.08.2010, 13:46
$mysql = mysql_connect(DATABASE_SERVER, DATABASE_USERNAME, DATABASE_PASSWORD);
mysql_query("SET NAMES 'utf8';");
mysql_query("SET CHARACTER SET 'utf8';");
mysql_query("SET SESSION collation_connection = 'utf8_general_ci';");
mysql_select_db(DATABASE_NAME);
А если используется не методы mysql, а mysqli, как в коде который предлагает нам встроенный генератор?
marceting
23.08.2010, 01:17
А если используется не методы mysql, а mysqli, как в коде который предлагает нам встроенный генератор?
$mysqli = mysqli_connect(путь, DATABASE_USERNAME, DATABASE_PASSWORD);
mysqli_query("SET NAMES 'utf8';");
mysqli_query("SET CHARACTER SET 'utf8';");
mysqli_query("SET SESSION collation_connection = 'utf8_general_ci';");
mysqli_select_db(DATABASE_NAME);
ЧТО ТУТ СЛОЖНОГО?
nOobCrafter
23.08.2010, 16:44
если совсем "нитого с сервером" то можно попробовать конвертнуть кодировку во флеше, но лучше все же добить сервер.
пропустите код через декодер прежде чем давать DataGrid
private function win2utf8(data:String):String
{
var b:ByteArray = new ByteArray();
for (var i:uint = 0; i < data.length; i++)
b[i] = data.charCodeAt(i);
return b.readMultiByte(b.bytesAvailable, "windows-1251");
}
может поможет
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.