аватар Автор: Сергей Касаткин | 22 февраля 2013 14:58

Статьи / Разное /

Проблемы с кодировкой файла или страницы на сайте

Если у Вас Неверно отображается кодировка на сайте или содержимое файла , который записан в другой кодировке, то эта статья для Вас!

Вы, наверное, уже хоть раз видели, что материал, который Вам нужен, отображается примерно следующим образом:



Самые популярные кодировки:


UTF8 - Юникод (!Внимание: в идеале всё должно быть в ней)
Windows-1251 - Кириллица (Windows).
KOI8-r - Кириллица (КОИ8-Р)
cp866 - Кириллица (DOS).
Windows-1252 - Западная Европа (Windows).
Windows-1250 - Центральная Европа (Windows).

Две причины неверного отображения кодировки (содержимого) на сайте:


1) неверно указан тип кодировки файла для его чтения (т.е. обработчик думает, что данные у Вас, например, в UTF8, а они в windows-1251)

Тип кодировки указывается в html документе в head

<meta http-equiv="content-type" content="text/html; charset=UTF8" />

в .htaccess в корне сайта на сервере

AddDefaultCharset UTF8 # кодировка файлов, в которой по умолчанию Отдаёт документы
AddCharset UTF8 .html # Пример: обрабатывает в данной кодировке html
AddCharset UTF8 * # Пример: обрабатывает в данной кодировке Все файлы

# Обработка в данной кодировке определённого файла
<Files "index.html">
AddCharset UTF8 .html
</Files> 

CharsetDisable On # Отменяем перекодировку Сервером загруженных файлов
CharsetDefault UTF8 # Кодировка, передаваемая Сервером Браузеру по умолчанию
CharsetSourceEnc UTF8 # Принудительная Перекодировка ВСЕХ загруженных на сервер файлов

или файле подключения к Вашей db, например db.php, где мы сразу может обработать данные при работе с базой данных

<?php
// типичное подключение к бд
$db = mysql_connect ("localhost","login","pass");
mysql_select_db ("db_name",$db)

// обработка данных
mysql_query('set character_set_client="utf8"');
mysql_query('set character_set_results="utf8"');
mysql_query('set character_set_connection = "utf8"');
mysql_query('set character_set_system = "utf8"');
mysql_query('set character_set_database = "utf8"');
mysql_query('set character_set_server = "utf8"');

// параметры работы с бд можно одной строкой
mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $db);
?>

Где:
character_set_client - кодировка запроса от клиента к серверу
character_set_results - кодировка отправки ответа от сервера к клиенту
character_set_system - кодировка системы
character_set_database - кодировка БД
character_set_server - кодировка сервера
character_set_connection - кодировка подключения

2) сам файл на сервере записан в другой кодировке

В данном случае рекомендую скачать текстовой редактор и пересохранить файл в уже нужной Вам кодировке.

Рекомендую следующие специализированные текстовые редакторы:
1) для Windows
NotePad++ (скачать или здесь)
Intype (скачать)

2) для Mac и Linux
Bluefish Editor (скачать)

Их отличие от обычных текстовых редакторов заключается в основном в том, что они делают автоматические отступы, ! дают возможность пересохранить файл в другой кодировке (обратите внимание, в будущем столкнётесь), окрашивают код в различные цвета.


1) скачайте один из вышеуказанных текстовых редакторов

2) Открыть (open) нужный Вам файл

3) Сохранить как (save as) - сначала название файла под ним будет тип файла, а ещё ниже кодировка.



Выбираете нужную кодировку (windows-1251, UTF8, ANSI, Юникод и другие).
Чаще всего используют UTF8 и windows-1251.

Всё то же самое можно сделать и в обычном Блокноте, но там выбор кодировок ограничен.
 



Похожие статьи


Комментарии к статье (vk.com)