proview.ruКонструирование сайтов → Проблема с кодировкой и её сменой.

Проблема с кодировкой и её сменой.

Всем привет. На протяжении многих месяцев я не мог побороть одну проблему, которая не давала мне покоя. Кодировка - как много в этом слове...

Смена кодировки на сайте

Кодировка - это определённая таблица, состоящая из некоторого кол-ва символов. Чтобы страница отразилась в доступном для нас виде, необходиму указать верную таблицу кодировки.

Выбор кодировки

Думаю, ни для кого не секрет, что сейчас на просторах Интернета наиболее используемы и восстребованы две таблицы: кириллица (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.

Смена кодировки sql-дампа

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

Популярное