Найти тему

Кракозябры в базе MySQL

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

Обычно дело в том, что phpMyAdmin по умолчанию создает базу и таблицы в кодировке latin1_general_ci.

Как решил:

1) Поменял кодировку базы в phpMyAdmin на utf-8:

Выбираем базу - нажимаем "Операции" - параметр "Cравнение" ставим "utf8_general_Ci" - "Вперед".

2) Тоже самое проделал с каждой таблицей в базе.

3) В файле подключения к базе key.php указал явную кодировку utf-8:

mysql_query("SET NAMES 'utf8'");

mysql_query("SET CHARACTER SET 'utf8'");

4) В других php файлах сайта явно указал кодировку utf-8: header('Content-Type:text/html; charset=utf-8');

5) В html файлах тоже: <meta charset="utf-8">

6) Ну и сами файлы сайта у меня были написаны в utf-8:

6.1) Для того чтобы проверить кодировку ваших файлов - откройте их через редактор кода, например Notepad++.

Нажмите в меню - "Кодировки". И убедитесь, что установлена кодировка UTF-8 без BOM:

6.2) Если же стоит другая:

Нажмите в меню - "Кодировки" и выберете пункт "Преобразовать в UTF-8 без BOM".

После этого проверьте, что русские буквы(кириллица) остались читаемы.

6.3) Если буквы превратились в кракозябры. Можете сделать следующее:

Преобразуйте файл в первоначальную кодировку, так чтобы текст снова стал читаем. Затем вырежьте его.

Снова перекодируйте файл в UTF-8 без BOM и вставьте обратно текст.

Все. После этого кракозябры в таблицах превратились в нормальные русские буквы - стали адекватно записываться и выводиться из базы.

Удачи тебе и успехов!