Для того, чтобы её решить есть множество вариантов. Я предлагаю их рассмотреть.
1 Вариант. Если вы пишите код с помощью блокнота Notepad++
Весьма распространенный вариант. Самое главное, что нужно помнить, когда работаете с Notepad++ - это то, что в самом редакторе нужно изначально настроить кодировку.
а) Меняется кодировка редактора во вкладке "Кодировки".
б) Просмотрите ВСЕ подключенные скриптовые файлы. У них тоже рекомендуется поменять кодировку на ту в которой вы хотите писать вашу страницу.
ВНИМАНИЕ!
После перевода кодировки, она может сразу испортить все символы. Поэтому просто скопируйте ВЕСЬ первоначальный код со страницы, затем переведите страницу в новую кодировку. И только потом вставьте ранее скопированный код на страницу, полностью заменив испорченный код.
2. Проблема с сервером.
Тоже еще одна распространенная проблема. Проверьте настройки вашего сервера. Кодировка сервера должна полностью совпадать с кодировкой файлов вашего сайта.
В OpenServer изменить её можно следующим образом.
Нажмите на флажок сервера. В меню будет вариант "Настройки". Жмите на них.
Далее в появившимся окошке нажмите вкладку "Кодировки". Там вы сможете изменить настройки (кодировки) сервера и базы данных.
3. Файл .htaccess
Зачастую этот файл зависит от настроек сервера и генерируется автоматически хостингом, поэтому его не требуется корректировать.
Но в случае, если у вас локальный сервер (расположен на вашем компьютере) его можно лишний раз проверить и записать парочку строчек кода.
Эти строчки выглядят таким образом:
DefaultLanguage ru
AddDefaultCharset windows-1251
php_value default_charset "windows-1251"
windows-1251 замените на свою кодировку (utf-8 и т.д.)
Строчки можно разместить в любом месте. Но рекомендуется разместить их в самом начале.
4.META - теги.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
В принципе, meta-теги с кодировкой можно не ставить вовсе - это даже даст больше шансов того, что ваша кодировка не слетит. Ставили их в основном из-за того, что старые машины не умели автоматически определять язык и кодировку в документе.
Но, если вы их хотите ставить, то не забывайте их проверить и выставить нужную кодировку.
p.s. если вы педагог одного из вузов ЭВМ и сразу будете спорить "Да как же так?", "Мета-теги нужны всегда!", то я не буду спорить. Лишь оговорюсь, что на практике их простановка - дело случая. Мета-тег теоретически закрепит вашу кодировку надёжнее.
5. Кодировка базы данных и таблиц.
Помимо веб сервера, есть ещё и база данных и таблицы, которые располагаются в ней.
а) В phpmyadmin нажмите на вашу базу данных и зайдите во вкладку "Операции". Там найдите пункт "сравнение". В этом пункте выберете нужную кодировку и сохраните результат.
б) В таблице кодировка меняется следующим образом: Жмете на нужную вам таблицу,далее жмите на вкладку "Операции" и там аналогичным образом выбираете кодировку.
в) В таблицах могут быть колонки с изначально выбранной кодировкой, их тоже стоит проверить. Для этого просто отредактируйте нужную колонку в таблице.
6. php файлы.
В случае если ничего из вышеописанного не помогло, то можно прописать в php-файлах следующую строку. (обычно её прописывают в php-файлах, где обрабатывается sql-запрос к базе данных)
header("Content-type: text/html; charset=windows-1251");
Прописать её можно либо в начале документа, либо в месте где вы пишите sql-запрос к Базе данных. В любом случае, стоит экспериментировать с местом, где вы будите ставить эту строку.
7. Правильно ли вы называете кодировку?
У каждой кодировки есть свое название, иногда некоторые символы можно перепутать.
Например, если вместо windows-1251 написать windows-1250, то это будет являеться другой кодировкой и приведет к проблемам.
В MySQL сервере кодировка windows-1251 имеет название cp1251_general_ci, но в php запросах следует писать windows-1251.
Как избежать проблем с кодировкой?
Лучший совет заключается в том, чтобы не перегружать код кодировками. Не нужно прописывать кодировку к каждой второй строчке js-скрипта, мета-тегам, прописывать кодировку около каждой колонки в таблицах базы данных.
Поверьте, это не нужно. Более того, будет вдвойне обиднее, если вы захотите глобально поменять ваш сервер с кодировки windows-1251 на utf-8, а ваш сайт целиком будет написан в кодировке windows-1251. Придется перелопатить не только сайт, но и базу данных.
Сейчас работают современные машины, способны автоматически определять кодировку, а лишняя строчка кода в виде кодировки расценивается машинами как камень под колесом кареты.
Второй совет заключается в банальной проверке кодировки, вышеперечисленными способами.