URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 4865
[ Назад ]

Исходное сообщение
"Кодировки"

Отправлено WhitePangolin , 12-Апр-07 16:47 
И снова здравствуйте.

Ситуация:
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>

является надпись:
Описание: Ïóñêî íàëàäî÷íûå ðàáîòû

Самое обидное, что обкатывал все скрипты на денвере под виндой и на нем все пашет, куда еще копать просто не представляю :(
Как говорится ай нид любой хелп.


Содержание

Сообщения в этом обсуждении
"Кодировки"
Отправлено A , 12-Апр-07 18:38 
может оказаться, что оно именно так в базе и лежит?

"Кодировки"
Отправлено WhitePangolin , 13-Апр-07 09:57 
>может оказаться, что оно именно так в базе и лежит?

Верно. Не хочется позорится но...

Дамп скидывался под виндой, копировался на FreBSD и там импортировался и естественно в неверной кодировке.

Перед импортом нужно было пробить команду
iconv -f WINDOWS-1251 -t KOI8-R win.sql > koi.sql

всем спасибо.


"Кодировки"
Отправлено WhitePangolin , 13-Апр-07 10:26 
Поправка

>Перед импортом нужно было пробить команду
>iconv -f WINDOWS-1251 -t KOI8-R win.sql > koi.sql

в моем случае надо было
iconv -f WINDOWS-1251 -t UTF-8 win.sql > utf.sql

результат изменился.
теперь вместо Ïóñêî íàëàäî÷íûå ðàáîòû я получаю Пуско наладоч

Данные в базе скула лежат правильные закодированные в utf-8, но в браузере фигня. Где еще я могу ошибаться?


"Кодировки"
Отправлено WhitePangolin , 13-Апр-07 15:17 
добавление в my.cnf строк

default-character-set=cp1251
skip-character-set-client-handshake

ничего не дало.
очень нужна помощь. ставить винду на сервак до слез не хочется.


"Кодировки"
Отправлено pavel_simple , 13-Апр-07 15:30 
>добавление в my.cnf строк
>
>default-character-set=cp1251
>skip-character-set-client-handshake
>
>ничего не дало.
>очень нужна помощь. ставить винду на сервак до слез не хочется.

переменные окружения проверял когда базу закачивал????
а можно проще сделать -- базу из под виндов задампи -- и из под виндов же перенеси на linux (или какой он там) сервер


"Кодировки"
Отправлено WhitePangolin , 13-Апр-07 16:21 
>а можно проще сделать -- базу из под виндов задампи -- и из под виндов же перенеси на 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'");
сразу после коннекта также ничего не дало :(


"Кодировки"
Отправлено WhitePangolin , 13-Апр-07 16:43 
Короче говоря заработало только после того как системные переменные касающиеся кодировок были приведены к такому виду
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

Всем спасибо.