28 февр. 2012 г.

Redmine русские буквы отображаются знаками вопроса ??? - неправильная кодировка в базе данных.

Если в Redmine русскоязычный интерфейс отображается корректно, а вот содержимое, например, статья в Wiki, вместо русских букв пишет ??? типа как тут:


то суть проблемы заключается в следующем. Вы когда создавали базу данных для редмайна, указали неправильную кодировку для данных.

1. Идем в MYSQL

mysql -uroot -p

2. Узнаем кодировку базы:

use our_database_name;
show variables like "character_set_database";

Если показывает что-то типа

+------------------------+--------+
| Variable_name          | Value  |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+

то у нас стоит англоязычная кодировка и "кина не будет".

3. Юзаем команду 

alter database `redmine_successionua` character set utf8;

Если не помогло, типа как мне, то надо чуток попотеть. 

4. Выходим с мускуля. И дампим нашу базу:

mysqldump -uroot -p our_database_name --allow-keywords --create-options --complete-insert --default-character-set=latin1 --add-drop-table > dump.sql

cp dump.sql /tmp

nano dump.sql

5. Редактируем дамп. Ищем слово latin1 (или какую вам кодировку выдало) и меняем на нужную нам (в моем случае utf8). З. Ы. кодировка должна быть в синтаксисе оператора CREATE TABLE или CREATE DATABASE.

6. После замены заливаем базу обратно:

mysql -uroot -p our_database_name --default-character-set=utf8 < dump.sql

Всё, русские буквы в Redmine должны корректно отображаться.