March 21st, 2011

Кодировка в MySQL

В Ubuntu создал базу MySQL, в ней таблицу.

Из клиентского приложения в кодировке unf8 вставляю в таблицу строку с кирилицей.
Читаю строку и вижу, что вместо русских букв символы '????'.

Явно, что-то ни то с кодировкой в MySQL.

На сервере выполняю команду:
show create database smartyit_cmain;

Получаю результат:

| Database       | Create Database                                                           |
+----------------+---------------------------------------------------------------------------+
| smartyit_cmain | CREATE DATABASE `smartyit_cmain` /*!40100 DEFAULT CHARACTER SET latin1 */ |

Теперь все ясно, кодировка по умолчанию latin1.

Смотрю список поддерживаемых кодировок
SHOW CHARACTER SET;
В длинном списке вижу нужную:
utf8

Её-то и надо поставить кодировкой по умолчанию.
Открываю конфигурационный файл:
/etc/mysql/my.cnf   

В нем, в разделе [mysqld]
прописываю строку:
default-character-set=utf8

перезагружаю сервер MySQL
/etc/init.d/mysql restart
Проблема решена, остается только заново пересоздать базу.