PDA

Просмотр полной версии : Кодировка Flex-PHP-MySQL


num213
16.04.2010, 00:48
Здравствуйте, знаю что такие темы уже здесь были, но в них я ответа не нашел - может потому что мало в этом разбираюсь.

Ситуация такая - есть DataGrid в которой нужно просто отобразить строки из таблицы БД, управляемой через phpMyAdmin. Юзаю HTTPService.
И в phpMyAdmin для базы установлен utf8_unicode_ci и в mxml прописан encoding="utf-8", однако на выходе из кириллицы получаются иероглифы. Как мне заставить эту **** отображать нормально?

wvxvw
16.04.2010, 03:30
А где вы его там в MXML прописали? Вам в PHP надо или конвертировать iconver'ом или если есть установленая библиотека mb_string сразу весь буфер перевести в мультибайт. Единственное что, либо я не понял как, либо это так по задумке авторов, DOMDocument в PHP упорно старается вместо юникодов их в HTML entities перевести, так что лучше использовать SimleXML если вы не просто строки формируете, а работаете с XML'ем.

num213
21.04.2010, 01:42
<?xml version="1.0" encoding="utf-8"?> - хотя это я так понимаю относиться только к xml. Пытался разобраться с iconver'ом и найти mb_string - ни то, ни другое не получилось, видимо потому что с программированием на php мало знаком.
Однако, как всегда получилось всё сделать через заднее место - при добавление новой записи через запрос отправленный из flex'a в php, он почему-то возвращает в datagrid нормальные слова, но при этом в БД они отображаются в виде абракадабры))

wvxvw
21.04.2010, 03:32
Ну эта запись в MXML вообще ни на что не влияет. Она просто для информации о том, в какой кодировке надо читать документ, но большинство програм ее просто игнорируют. А вообще кодировка MXML на работе програмы никак отразится не может, MXML это просто шаблон по которому генерится AS класс, а из него уже компилируется флешевый байткод. PHPMyAdmin просто скорее всего все выводит как ANSI.

kaibest
26.07.2010, 23:08
у меня сейчас такая же проблема. строки в баке по русски, а в 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
если совсем "нитого с сервером" то можно попробовать конвертнуть кодировку во флеше, но лучше все же добить сервер.

kitsela
25.08.2010, 17:11
пропустите код через декодер прежде чем давать 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");
}


может поможет