Думаю я не первый и не последний "программист", который сталкивался и ломал голову над этой проблемой. В этой статье я постараюсь помочь вам не наступить на те же грабли. Ну или, если уж наступили, как можно быстрее с ними разобраться.
Обычно дело в том, что 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 и вставьте обратно текст.
Все. После этого кракозябры в таблицах превратились в нормальные русские буквы - стали адекватно записываться и выводиться из базы.
Удачи тебе и успехов!