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

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

Всем доброго времени суток. На связи Алексей Гулынин. В прошлой статье мы разобрали создание таблиц в html. В данной статье я бы хотел рассказать о проблеме, с которой вы обязательно столкнетесь (если ещё не столкнулись) в своей практике. А проблема эта связана с кодировкой на сайте. Нередко бывает такая ситуация: ты сидишь, что-то придумываешь, в итоге твои мысли выражаются в написанный код. Открываешь своё творение в браузере, а там написана полная ерунда, или как обычно данную ерунду называют — "кракозябры". Тут очевидно одно, что проблема с кодировкой на сайте. Скорее всего у вас по умолчанию стоит кодировка windows-1251 (кирилица), а браузер пытается открыть ваш файл в кодировке utf-8. Кратко о том, что такое кодировка. Кодировка — это некая таблица, которая каждому символу ставит в соответствие какой-то машинный код. Соответственно наши русские буквы в одной кодировке имеют один код, в других — другой код. Друзья, используйте везде кодировку utf-8 и будет вам счастье. По-другому utf-8 называется Юникод.

Давайте создадим тестовый документ в Notepad++ и запишем следующий код.

<html>
<meta charset="utf-8"/>
<head><title>Проблемы с кодировкой</title></head>
<body>
<p>Тестируем проблемы с кодировкой</p>
</body>
</html>

В меню Notepad++ проверьте, чтобы наверху стояло "Кодировки" — "Кодировать в ANSI". Мы сейчас с вами искусственно создадим проблему с кодировкой. Попробуйте сейчас открыть данный файл в браузере. Мы увидим иероглифы. Дело здесь в том, что мы создали наш файл в кодировке ANSI (кирилица), а браузеру сообщили, что наш файл в кодировке utf-8 (<meta charset="utf-8"/>).

Причины, по которым возникают проблемы с кодировкой на сайте:

1) Неправильное значение атрибута charset у мета-тега.

2) В меню Notepad++ проверьте, чтобы кодировка файла была utf-8. Это нужно сделать "Кодировки" — "Кодировать в UTF-8 (без BOM)". В интернете можно найти определение, что такое "BOM", но оно малопонятное. Как я понял, в начале документа, ставится неразрывный пробел с нулевой шириной. Он нам не нужен, поэтому всегда ставьте "без BOM".

3) Бывает такое, что первые два пункта выполнены, но на страницах сайта всё равно появляется ерунда. Здесь проблема может быть в настройках сервера,т.е. хостинг напрямую передаёт заголовки для наших файлов и выставляет кодировку по умолчанию. Давайте попробуем отучить его это делать. В корневой директории сайта должен быть файл .htaccess. С помощью этого файла можно вносить корректировки в работу хостинга. Если данного файла у вас нет, то его нужно создать. Удобно это сделать в редакторе Notepad++. В данном файле необходимо написать следующий код:

AddDefaultCharset UTF-8

Данной инструкцией мы говорим серверу, что у нас кодировка по умолчанию "utf-8". Если это не помогло, то нужно написать в этом же файле следующий код:

charsetdisable on
AddDefaultCharset Off

Здесь мы пытаемся сказать серверу, что нам не нужна кодировка по умолчанию. Если после данных махинаций ничего не помогло, то необходимо писать хостеру и решать данную проблему с ним. Возможно он что-то подскажет.

4) Ещё одна проблема может быть связана с кодировкой базы и таблиц в ней. Необходимо, чтобы они были выполнены в одной кодировке, как и весь сайт. В своей практике, я с такой проблемой не сталкивался. Чуть не забыл один момент, после того, как вы запросом извлекаете данные из базы данных, в начало запроса поставьте инструкцию SET NAMES "utf8" (вместо utf-8 может быть любая другая кодировка).

В данной статье вы узнали, как решить проблему с кодировкой на сайте.

На связи был Алексей Гулынин, оставляйте свои комментарии, увидимся в следующих статьях.


Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *