И снова здравствуйте.Ситуация:
FreeBSD 6.2-RELEASE + apache-2.2.3 + mysql-server-5.1.11 + php5-5.1.6_3 + все скрипты написаны в UTF-8в php.ini
default_charset=utf8
mbstring.language=Russian
mbstring.internal_encoding=utf8в .htaccess
AddDefaultEncoding Offв index.htm
<meta http-equiv="content-type" content="text/html; charset=UTF-8">в дампе
CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;перед коннектом к базе выполняем
mysql_query('set character utf8');
mysql_query('set names utf8');результат плачевный ибо после выполнения запроса результатом выполнения скрипта например:
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<?$sql=mysql_query('SELECT * FROM `descr`');$sql=mysql_fetch_array($sql);?>
Описание: <?=$sql['descr']?>
</body>
</html>является надпись:
Описание: Ïóñêî íàëàäî÷íûå ðàáîòûСамое обидное, что обкатывал все скрипты на денвере под виндой и на нем все пашет, куда еще копать просто не представляю :(
Как говорится ай нид любой хелп.
может оказаться, что оно именно так в базе и лежит?
>может оказаться, что оно именно так в базе и лежит?Верно. Не хочется позорится но...
Дамп скидывался под виндой, копировался на FreBSD и там импортировался и естественно в неверной кодировке.
Перед импортом нужно было пробить команду
iconv -f WINDOWS-1251 -t KOI8-R win.sql > koi.sqlвсем спасибо.
Поправка>Перед импортом нужно было пробить команду
>iconv -f WINDOWS-1251 -t KOI8-R win.sql > koi.sqlв моем случае надо было
iconv -f WINDOWS-1251 -t UTF-8 win.sql > utf.sqlрезультат изменился.
теперь вместо Ïóñêî íàëàäî÷íûå ðàáîòû я получаю ПуÑко наладочДанные в базе скула лежат правильные закодированные в utf-8, но в браузере фигня. Где еще я могу ошибаться?
добавление в my.cnf строкdefault-character-set=cp1251
skip-character-set-client-handshakeничего не дало.
очень нужна помощь. ставить винду на сервак до слез не хочется.
>добавление в my.cnf строк
>
>default-character-set=cp1251
>skip-character-set-client-handshake
>
>ничего не дало.
>очень нужна помощь. ставить винду на сервак до слез не хочется.переменные окружения проверял когда базу закачивал????
а можно проще сделать -- базу из под виндов задампи -- и из под виндов же перенеси на linux (или какой он там) сервер
>а можно проще сделать -- базу из под виндов задампи -- и из под виндов же перенеси на linux (или какой он там) серверданные в базе на сервере лежат хорошо.
в консоли русские буковки я вижу. проблемма не в переносе данных в базу, проблемма в том что все скрипты написаны в utf8 и прекрасно отображают русский язык в браузере, а данные из бд хоть и стоят в той же utf8 но выводятся козябликами.добавление команд
mysql_query('SET NAMES "UTF8"');
mysql_query("SET collation_connection='utf8_general_ci'");
mysql_query("SET collation_server='utf8_general_ci'");
mysql_query("SET character_set_client='utf8'");
mysql_query("SET character_set_connection='utf8'");
mysql_query("SET character_set_results='utf8'");
mysql_query("SET character_set_server='utf8'");
сразу после коннекта также ничего не дало :(
Короче говоря заработало только после того как системные переменные касающиеся кодировок были приведены к такому виду
mysql> \g SHOW VARIABLES LIKE '%char%'
+--------------------------+----------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/share/mysql/charsets/ |
+--------------------------+----------------------------------+
8 rows in set (0.01 sec)а дамп полученной в денвере базы был обработан командой
iconv -f WINDOWS-1251 -t UTF-8 win.sql > utf.sqlВсем спасибо.