Проблема с кодировкой сайта
Вступление
Каждый web-разработчик хотябы раз в своей жизни, а то и стопятсот раз сталкивался с проблемой неправильной кодировки сайта (например, когда вместо русских букв вы видите кракозябры). А если выразиться более корректно, то с проблемой «расхождения» кодировок на сайте. Ибо если везде указана одна и та же кодировка, то проблем с ней возникнуть не может! Итак, давайте попробуем разобраться, в каких местах нам надо настроить (указать) кодировку для сайта:
- Перекодировать сам файл, отвечающий за web-страницу
- Перекодировать все подключаемые к нему файлы
- Указать кодировку в файле httpd.conf
- Указать кодировку в файле .htaccess
- Указать кодировку Базы данных
Самое главное - это соблюсти одно условие: во всех вышеперечисленных местах кодировка должна быть одинаковой. Если это utf-8, то везде, во всех пяти местах, это должна быть именно utf-8. Иначе рано или поздно вы будете сталкиваться с проблемой кодировок и тратить на это по парочке часов драгоценного времени.
1. Как перекодировать файл, отвечающий за web-страницу?
Для того чтобы узнать текущую кодировку файла, вы можете открыть его в Notepad++, зайти в пунк «Encoding» и там будет выбрана текущая кодировка файла. Для того чтобы её сменить, например, на UTF-8, выберите в этом же меню «Convert to UTF-8 without BOOM».
2. Как перекодировать подключаемые файлы?
Иногда бывает так, что в файле с правильной кодировкой подключается файл с совершенно другой кодировкой, из-за чего возникают проблемы. Например, файл может подключаться так:
<?php include "file.php"; ?>
Поступите с подключаемыми файлами так, как написано в пункте 1.
3. Как указать кодировку в файле httpd.conf?
Файл httpd.conf содержит глобальные инструкции для сервера. Обычно он расположен по пути «/usr/local/apache/conf/», также вы можете его найти поиском. Если в нем изменить кодировку по умолчанию, то она поменяется для всех сайтов, расположенных на этом сервере. Будьте аккуратны!
Чтобы сменить кодировку, найдите в файле httpd.conf строчку «AddDefaultCharset windows-1251» и замените на «AddDefaultCharset utf-8».
Кстати, если вы пользуетесь виртуальным платным сервером, то скорее всего, у вас не будет доступа к этому файлу. Но следующий пункт вам поможет.
4. Как указать кодировку в файле .htaccess?
В корневой директории вашего сайта скорее всего уже есть, а если нету, то можно создать файл .htaccess. Да-да, это файл без имени, только с расширением. Он отвечает за настройки апача для конкретного сайта. Для того чтобы в нем прописать кодировку сайта, необходимо найти и подправить (или добавить) вот такую строку: «AddDefaultCharset UTF-8».
5. Как указать кодировку Базы данных?
Есть такие люди, которые проблему несоответствия кодировок файлов и БД решают, например, так:
<?php
$link = mysql_connect("localhost", "user", "password");
mysql_set_charset("utf8",$link);
?>
Ну и существует еще порядка 10 способов на лету (при извлечении, при записи) перекодировать данные. Но понятно же, что когда-нибудь это не сработает: просто в кодировке windows-1251 не окажется нужного символа.
Так что когда создаете БД, то выбирайте сразу же правильную кодировку: «UTF-8 general ci». Либо можно попробовать сменить кодировку в Базе данных:
Ах да! Не забудьте, что в базе данных у каждой таблицы есть своя кодировка. И если на момент смены кодировки у самой БД уже были созданы какие-то таблицы, то им также придется вручную сменить кодировку:
Ну и еще вас немного огорчу. У колонок таблицы тоже есть своя кодировка =) И если таблица на момент перекодирования БД была уже создана, то эту кодировку также придется сменить:
Конец
Ну вот, надеюсь, что после прочтения этой статьи вы поняли, что кодировка может задаваться не только в самом файле, но и еще в куче разных мест. Дерзайте, друзья, и используйте везде кодировку UTF-8, ибо её поддерживают сейчас все разработчики, и она поддерживает все известные и неизвестные вам символы ;)