?

Log in

No account? Create an account
Ben-Ja записки линуксоида или Ёшкин КОД
net4me
net4me
mysql 5 + php 5 utf8 везде. вскипание мозга
Мозг начинает вскипать...
mysql 5
php 5
Везде тотально utf8
локаль uft8
базы, данные, сам дамп в utf8
сайт в utf8.
Всё в utf8 от и до. Вплоть до хэдеров самой страницы:
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
И?
Кривая кодировка сайта. =(

Если не верите, то вот:
mysql> SHOW VARIABLES WHERE Variable_name LIKE '%character%';
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)


Причем сам мускуль (после uft8 выправки конфигов в utf8 вместо идиотской latin1) данные выводит нормально.

mysql> select *** from *** where ***;
+-----------------------------------------------------------------------------------------------------------------+
| Отключение поддержки ipv6 в Линукс. IPv6 off in Linux. как отключить ipv6                                       |
+-----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Выходит, дело в php. Но там я НИГДЕ не конвертирую данные!

Уже весь мозг себе сломал.

Остается мне разобрать php и все-таки найти в чем там згвоздка...

Tags: , , ,

2 comments or Leave a comment
Comments
net4me From: net4me Date: March 2nd, 2010 08:02 am (UTC) (Link)
Что ни выделывал, как с бубном ни танцевал - бесполезно.
Если в php скрипте насильно прописать
mysql_query('SET NAMES utf8');
то всё работает.
Если убрать - перестает работать.

Решилось всё насильной установкой mysql серверу параметров загрузки.
--init_connect="SET NAMES 'utf8'"
То есть в конфиге, в секцию сервера была добавлена строчка, насильно устанавлявающая NAMES в utf8:

[mysqld]
init_connect="SET NAMES 'utf8'"
character_set_server=utf8
collation_server=utf8_general_ci

И о чудо! оно заработало!
Оторвал бы *йца кодерам, сделавшим настолько неудобные конфиги!
Всё работает. трабла решена. Спасибо за внимание и заходите на net4me.net =)
net4me From: net4me Date: March 2nd, 2010 08:10 am (UTC) (Link)
В итоге настройки для тотального utf8 в mysqld выглядят так:
mysql> SHOW VARIABLES WHERE Variable_name LIKE '%character%' OR Variable_name LIKE '%collation%' OR Variable_name = 'init_connect';
+--------------------------+----------------------------+
| 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/share/mysql/charsets/ |
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
| init_connect | SET NAMES 'utf8' |
+--------------------------+----------------------------+
12 rows in set (0.00 sec)

Обратите внимание на init_connect и SET NAMES 'геа8'
2 comments or Leave a comment