LINUX.ORG.RU

Кодировка в dotproject


0

0

Перенес dotproject с машины на машину (с etch на lenny).
до этого dotproject работал с utf-8.
теперь все что он читает из базы выглядит знаками вопроса.
скрипт дампа в utf-8. база в utf-8. апач отдает "Content-Type" content="text/html;charset=UTF-8".

в my.cnf:

[mysqld]
default_character_set = utf8
character_set_server = utf8
init_connect = 'SET NAMES utf8'

show variables

| 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 |


вообще говоря, все конфиги (apache, php, mysql) я скопировал один к одному. Если создавать новую запись на русском - в браузере нормально выглядит, в mysql select - нечитаемая херня (с точки зрения utf8). Что этой твари еще надо?

★★

Дамп, часом, не от пользователя с привилегией SUPER делается?

По-хорошему, строки

default_character_set = utf8 character_set_server = utf8 init_connect = 'SET NAMES utf8'

нужно помещать в секцию [client]

А еще лучше делать SET NAMES utf8 при коннекте к БД.

sjinks ★★★
()
Ответ на: комментарий от sjinks

>Дамп, часом, не от пользователя с привилегией SUPER делается?

а если да? (не помню честно от кого дамп делался, скорее всего от root)

>По-хорошему, строки default_character_set = utf8 character_set_server = utf8 init_connect = 'SET NAMES utf8' нужно помещать в секцию [client]


default_character_set = utf8 в [client] стоит... остальные вроде как серверные директивы. на всяк случай вписал - безрезультатно.

>А еще лучше делать SET NAMES utf8 при коннекте к БД.


а init_connect = 'SET NAMES utf8' это не оно? при каждом новом подключении выполняет SET NAMES utf8

тут дело в dotproject думаю, не в mysql.

k0l0b0k ★★
() автор топика
Ответ на: комментарий от k0l0b0k

> а если да? (не помню честно от кого дамп делался, скорее всего от root)

Если да, то в этом баг. MySQL игнорирует init_connect для пользователей с привилегией SUPER. В результате character_set_client может быть не тем, что Вы ожидаете.

Оффтопик, но дамп базы лучше делать при помощи mysqldump.

> остальные вроде как серверные директивы

Да, не заметил :-[ Я на SHOW VARIABLES посмотрел.

> а init_connect = 'SET NAMES utf8' это не оно?

"It is still necessary for applications to configure their connection using SET NAMES or equivalent after they connect, as described previously. You might be tempted to start the server with the --init_connect="SET NAMES 'utf8'" option to cause SET NAMES to be executed automatically for each client that connects. However, this will yield inconsistent results because the init_connect value is not executed for users who have the SUPER privilege."

-- http://dev.mysql.com/doc/refman/5.1/en/charset-applications.html

sjinks ★★★
()
Ответ на: комментарий от sjinks

>Если да, то в этом баг. MySQL игнорирует init_connect для пользователей с привилегией SUPER. В результате character_set_client может быть не тем, что Вы ожидаете.

оно! спасибо, мен! как только движок ЛОРа позволит делиться скором, отсыплю немедленно!

k0l0b0k ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.