Проблема с кодировкой и её сменой.
Всем привет. На протяжении многих месяцев я не мог побороть одну проблему, которая не давала мне покоя. Кодировка - как много в этом слове...
Кодировка - это определённая таблица, состоящая из некоторого кол-ва символов. Чтобы страница отразилась в доступном для нас виде, необходиму указать верную таблицу кодировки.
Выбор кодировки
Думаю, ни для кого не секрет, что сейчас на просторах Интернета наиболее используемы и восстребованы две таблицы: кириллица (Windows-1251) и 8-битная форма юникода (UTF-8). Первоначально, когда я делал первые шаги, я использовал кириллицу, т.к она была наиболее популярна. Сейчас она утрачивает свою значимость, на смену приходит более мощная - 8-битное кодирование текста Юникодом, называемое UTF-8.
Сначала я не придавал этому значение, однако после начал замечать, что моя кириллическая вёрстка сдаёт позиции, и возникают проблемы с англоязычными сервисами. Исходя из всего этого, мой вам совет - используйте UTF-8, кириллица - это прошлый день.
Смена кодировки на сайте (CP1251-UTF-8)
Обычно, смена происходит в три этапа: меняем кодировку самих страниц, указываем используемую кодирвку, меняем кодировку в БД. Теперь о каждом пункте по подробнее.
1. Смена кодировки веб-страниц
На этом этапе нам понадобится любой текстовый редактор, который способен изменить кодировку файла. Я использую для таких целях Notepade2.
Итак, открываем нашу страницу в программе:
Жмём Файл--Кодировка и меняем с ANSI на UTF-8.
2. Указываем кодировку браузеру
Браузер - это такая же груда программного кода, которая не в состоянии самостоятельно определить кодировку. Поэтому тут нужно делать вручную. Можно пойти несколькими путями:
1) Прописать meta-тег для указания кодировки
Для каждой страницы добавляем:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
2) Прописать PHP-директиву для указания кодировки
Для каждой страницы добавляем:
<?php header('Content-type: text/html; charset=utf-8')?>
3) Прописать директиву в .htaccess для указания кодировки
Это самый лучший и простой способ, т.к нужно добавить лишь одну строчку в файл .htaccess:
AddDefaultCharset UTF-8
3. Изменяем кодировку в БД
Это, пожалуй, самый проблематичный шаг. Дело доходило до того, что я писал в службу поддержки хостинга. Но и её представители не дали мне вразумительно ответа. Ответ был найден на стороннем блоге. Оказалосьб, что я не добавил парочку директив в файл с соединением БД.
Итак, смотрим:
1) Экспортируем наши таблицы (БЕЗ СЖАТИЯ).
2) Помещаем полученный код при экспорте в пустой файл с расширение sql
3) Меняем кодировку данного файла через Notepad2 на UTF-8 без BOM.
4) Открываем файл и изменяем кодировку таблиц.
Находим все возможные подобные строки в нашем файле:
ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;
Меняем cp1251 на utf8.
5) Прописываем PHP-директиву в файл с соединением БД.
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
И только после этих операций кодировка будет сменена. Надеюсь, что вы не наступите на грабли, на которые наступил в своё время я.
Источник: www.seoexecutor.ru