Решение проблемы с кодировками в MySQL

Дата публикации: 12/12/2008

Это будет достаточно специфическая заметка, но кому-нибудь она, возможно, пригодится. С этой проблемой я разбирался буквально вчера. Все началось с того, что на одном сайте в результате каких-то действий на сервере, что-то сбилось и часть текста превратилась в вопросики. После изучения проблемы выяснилось, что сбились кодировки в некоторых таблицах базы данных MySQL.

Вот так выглядит страничка сайта со сбитой кодировкой в базе данных

Как известно, внутри себя MySQL хранит данные в кодировке UTF-8, а перекодирование в нужную клиенту кодировку происходит непосредственно при чтении данных. В какую именно кодировку следует перекодировать результат запроса определяется настройками таблицы при ее создании. А если кодировка в таблице явно не указывается, то берутся значения по умолчанию, установленные для всей базы данных.

В случае, если кодировка, указанная для таблицы, не будет совпадать с кодировкой собственно данных, то в результатах мы получим далеко не то, что ожидаем. Внешне это может выглядеть и как мешанина из букв и как сплошные вопросики. Если затем зайти в базу данных посредством, например, "phpMyAdmin" и посмотреть структуру базы, то можно увидеть в некоторых текстовых полях в колонке "Сравнение" неправильную кодировку. Но не торопитесь менять кодировку таблицы, редактируя параметры поля, т.к. вы можете все испортить безвозвратно перекодировав все данные и тогда их уже будет не восстановить.

Читать дальше

Теги: MySQL, базы данных, программирование, решение проблем

Смотри также