Как поменять кодировку на сайте
Меня несколько раз просили написать, как поменять кодировку на сайте. Дело это состоит из нескольких частей, поэтому в двух словах не объяснить. И я принял решение написать эту статью, в которой чётко расписать, что требуется для смены кодировки на сайте.
Давайте с Вами будем переводить сайт в кодировку UTF-8. Если Вы хотите перевести в любую другую кодировку, то всё будет аналогично. Итак, вот порядок действий для этого:
- Все текстовые файлы (html, php, js, txt, в общем, в которых есть текст) перекодируйте в UTF-8. Сделать это очень просто через Notepad++ в пункте "Преобразовать в UTF-8 без BOM" из меню "Кодировки". Причём именно все файлы, которые даже ничего не выводят на страницу.
- Поместите в корень сайта файл .htaccess с текстом AddDefaultCharset UTF-8.
- Поменяйте кодировку в мета-теге <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
Если Ваш сайт не использует базу данных, то на этом этапе можно закончить менять кодировку. Но если база данных есть, то нужно сделать ещё и следующие шаги:
- Сразу после подключения к БД выполните запрос: SET NAMES UTF-8
- В phpMyAdmin поменяйте кодировку базы данных на utf8_general_ci в её настройках.
- Поставьте у всех таблиц кодировку utf8_general_ci.
- У всех текстовых типов полей так же поставьте кодировку utf8_general_ci.
Всё, теперь Ваша кодировка на сайте изменена. Добавлю лишь, что если где-то в коде Вы занимались преобразованием из одной кодировки в другую (например, через функцию iconv()), то тщательно проверьте это место, возможно, там появится проблема.
Если после смены кодировки у Вас что-то отображается не так, то почитайте эту статью: проблемы с кодировкой.
-
- Михаил Русаков
Комментарии (11):
Молодец Михаил урок очень полезный.Люблю когда коротко и ясно а не наоборот. Спасибо!
Ответить
просто класно понятно и ещлково спасибо
Ответить
Здравствуйте Михаил, вот я опробовал, то что вы написали, только с кодировкой windows-1251. Прямо все способы разом применил, вот только все равно вылетали кракозябры. Но вдруг я случайно в файле .htaccess указал кодировку utf-8 и все заработало, нет кракозябр (притом в базе данных и в скрипте у меня кодировка windows-1251). Не могли бы вы мне ответить, почему? (если, конечно этому есть объяснение)
Ответить
Значит, файлы всё-таки в UTF-8 были. И из базы данных данные тоже поступали с кодировкой UTF-8 (по умолчанию, она и стоит на denwer).
Ответить
Спасибо!
Ответить
Здравствуйте.Срочно нужна ваша помощь. Выходили крокозябры. решил перекодировать под UTF-8 по вашим указаниями. На 2 или 3 пункте я что-то не так сделал(скорее всего на 3) и у меня сайт перестал работать. Вводя ссылку, у меня пишет текст из index.php
Ответить
http://myrusakov.ru/php-start.html
Ответить
Добрый день. Такая проблема. У меня база данных изначально в кодировке cp1251. База для скрипта почтовой рассылки. Сайт, где внедрен скрипт - в кодировке utf8. Все, что написано в данной статье (по изменению кодировки в базе данных) я сделал. И, все равно, происходит следующее: пользователь, желающий оформить подписку на сайте, после того, как ввел в форму свои имя и e-mail, получает письмо (чтоб подтвердить рассылку), где его имя написано кракозябрами, и далее (после подтверждения) в таком виде и остается в базе данных. Если же меняю кодировку сайта на windows1251 - все хорошо, имя человеческое. Но я не хочу менять кодировку сайта. Как быть? Может быть, есть возможность как-то поменять кодировку отдельно взятого элемента, в данном случае, кодировку формы отправки данных? Спасибо.
Ответить
Убедитесь, что в письме есть заголовок Content-type с кодировкой utf-8.
Ответить
Прошу простить, но я совсем плохо знаком с php. Вот такой у меня код отправки. Скажите, что и где нужно поменять? http://jsfiddle.net/w2fes/
Ответить
Уважаемый Дмитрий,проверьте,пожалуйста,вот эту строчку с параметрами windows-1251 и utf-8. $headers .= "Content-type: text/plain; charset=windows-1251\r\n"; если не поможет,то будем разбираться
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.