Билайн

HTML кодировка. В какую кодировку сохранять web-страницу. Меняем кодировку страниц

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

Почему вместо нормального текста отображаются кракозябры

Каждая страница вашего сайта должна иметь определенную кодировку. О том, какая кодировка используется в данный момент необходимо сообщать браузеру, передавая специальные заголовки (header). В этих заголовках необходимо указать кодировку, соответствующую той, которую вы используете в теле документов, размещенных на сайте (на его страницах).

Современные браузеры могут и сами определить кодировку документа, если вебмастер забыл указать ее в явном виде. Иногда случается так, что возникают несостыковки между «мнением» браузера и реальностью, отсюда и появляется набор символов, которые невозможно прочитать. Набор галиматьи может принимать разные виды, иногда это будут просто странные символы, похожие на древние иероглифы, а иногда - просто вопросики или же вопросики внутри черных ромбиков. По большому счету не так важно, какие именно кракозябры отображает браузер, а важно то, что человек их прочитать не может.

Если же вы столкнулись с проблемой некорректно указанной кодировки и видите на своем сайте то, что не в состоянии прочитать, в первую очередь воспользуйтесь специальным Декодером , разработанным в студии Артемия Лебедева. Для этого просто скопируйте текст, который хотите расшифровать, вставьте его в специальное поле и нажмите «Расшифровать». В случае успешного декодирования, вы увидите уже читаемый текст, а также исходную кодировку и путь, который пришлось пройти программе, чтобы вывести результат.

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

Как правильно выбрать кодировку

В рамках данной статьи мы не будем углубляться в то, какие кодировки бывают и чем они друг от друга отличаются, т.к. не хотим перегружать ни себя, ни вас лишней информацией, да и в целях сегодняшней статьи этого не было. Стоит отметить лишь тот факт, что на русскоязычном сайте нет совершенно никакого смысла устанавливать кодировку windows-1251 , исчерпывающе описанную в замечательной статье Википедии. Даже если все тексты на нем будут написаны исключительно на русском и не будет никаких вкраплений нестандартных символов. Вместо этого нужно просто выбрать универсальную кодировку UTF-8 , приняв это как данное, не забивая голову лишней информацией.

Дело в том, что нет смысла выбирать для своего сайта кодировку, которая поддерживает одни только символы славянских языков, таких как русский, украинский, белорусский, сербский, македонский и болгарский. Зачем изначально ограничивать себя и обрекать на возможные проблемы в дальнейшем. Что вы будете делать, если понадобится вставить символ, которого нет в поддерживаемых?

UTF-8 (от англ. Unicode Transformation Format) - восьмибитный формат преобразования Юникода, который получил всемирное признание и был стандартизирован как раз для избежания проблем, связанных с появлением кракозябров и неразберихой с нечитабельными текстами. Из чего можно смело сделать вывод, что в данном случае из двух зол нужно выбирать бóльшую и спать спокойно, не вникая в подробности, потому что тут и так все понятно. Посмотрите на размер Юпитера и Венеры для сравнения.

Основные способы установки правильной кодировки

Довольно часто проблемы с кодировкой сайта возникают не потому что не было выполнено ни одного из условий, о которых мы вам сейчас расскажем, а достаточно не выполнить всего лишь одно из них, чтобы текст на вашем сайте начал отображаться некорректно. После того, как вы установите кодировку всеми перечисленными способами, задача будет решена с вероятностью 99.9%. К такому заключению мы пришли на основании многолетнего опыта работы с сайтами на всевозможных хостинг-площадках, с использованием самых разных систем администрирования и настроек серверов.

Кодировка в.htaccess - AddDefaultCharset

Прежде всего, вам нужно установить кодировку всех страниц сайта по умолчанию с помощью одной очень полезной директивы htaccess - AddDefaultCharset, которая в дословном переводе с английского языка означает «ДобавитьКодировкуПоУмолчанию». Делается это очень просто:

AddDefaultCharset UTF-8

Если вы не знаете что такое , то просто создайте текстовый файл в блокноте, а затем с помощью Total Commander-а переименуйте его в файл без названия, имеющий расширение HTACCESS ( - именно так и должно выглядеть полное имя вашего файла). После этого закачайте только что созданный файл в корневую директорию вашего сайта (в то же место, где находится главный исполняющий файл, например index.php ). И не забудьте вставить строку с кодировкой по умолчанию, которую мы только что приводили.

Кодировка с помощью meta charset

Метатеги способны отсылать браузеру информацию о странице в виде специальных заголовков, одним из которых как раз является тот, что нам нужен - charset . Вообще метатеги могут иметь аж 4 различных атрибута:

  1. content;
  2. http-equiv;
  3. name;
  4. scheme.

На самом деле, из представленных четырех атрибутов только один является обязательным - content , но существуют и исключения. Например в нашем случае будет использоваться сокращенная версия записи и мы установим кодировку с помощью метатега именно так:

Старый же формат записи давно канул в Лету и использовать его больше смысла нет:

Как известно, метатеги принято размещать внутри контейнера head . Об этом, наверное, знают уже все без исключения. Проделайте эту операцию и мы перейдем к следующему пункту в нашем списке.

Кодировка файла с помощью функции header PHP

Данный способ подойдет лишь тем, у кого сайт реализован с помощью самого популярного на данный момент языка программирования, по большей части ориентированного на создание веб-сайтов - PHP (Hyper Text Preprocessor). Для решения задачи, поставленной в рамках данной статьи, мы воспользуемся замечательной встроенной функцией header() , предназначенной для передачи заголовков, аналогично метатегам, но с тем небольшим отличием, что действие производится из PHP-скрипта, а не посредством вывода HTML-кода.

Установить кодировку UTF-8 для файла при помощи функции header() довольно просто - нужно просто вставить приведенный код в самое начало страницы, но разумеется внутри области действия PHP, которая обозначается так: или же так - .

Header("Content-type: text/html; charset=utf-8");

Самым важным моментом здесь является то, что заголовки мы имеем право передавать только в том случае, если перед этим не было никакого вывода со стороны скрипта. Именно поэтому мы вставляем данный код в самое начало страницы. Делать это нужно с умом и хорошо понимать, что происходит, ведь вы можете быть уверены, что вставляете заголовок в начало файла, но можете не знать, что этот файл используется в другом файле, в который подтягивается с помощью функции require или include уже после того, как определенная информация была выведена на экран. Поэтому если вы не очень хорошо понимаете о чем сейчас идет речь, лучше перейдите к следующему шагу и вернитесь к этому, если 3 предыдущих не помогли установить правильную кодировку страниц вашего сайта.

Сохранение файлов в правильной кодировке

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

Как мы условились ранее, используемая нами кодировка на всех, даже на самых прожженных русскоязычных сайтах - UTF-8, поэтому и все файлы, составляющие движок сайта мы с вами будем кодировать в этом же формате. А для того, чтобы изменить кодировку самого файла, закачиваемого на сервер, обычного блокнота, предоставляемого операционной системой Windows будет конечно же не достаточно. Поэтому лучше воспользоваться сторонней программой, распространяемой бесплатно - Notepad++, которую можно скачать на официальном сайте без особых проблем.

Успешно пройдя несложный процесс установки, вы должны будете назначить эту программу редактором по умолчанию, произвести некоторые настройки на свой вкус и поменять кодировку некорректно отображаемого файла так же, как показано на скриншоте. Т.е. вам необходимо выбрать значение «Кодировать в UTF-8 (без BOM)». Хорошим признаком того, что причина была именно в этом, будет то, что изначально не будет выбран ни один из вариантов и вам будет предложено «Преобразовать в UTF-8 (без BOM)». Если вы это увидели, то будьте уверены, что до решения проблемы с кодировкой остались считанные секунды.

В дополнение хочется сказать лишь то, что выбирать нужно именно без BOM . В противном случае, если кодировать просто в UTF-8 (с BOM), то в начале файла будут создаваться лишние байты. BOM - Byte Order Mark стараются не использовать именно в вебе при кодировании в формате UTF-8, т.к. это приводит к ошибкам из-за создания помех корректной PHP-интерпретации.

Ну а теперь, когда все необходимые действия выполнены, вы, скорей всего, на страницах вашего сайта увидите перед собой легко читаемый текст и вздохнете свободно 🙂

При создании сайта у начинающих веб-мастеров часто появляются вопросы: в какой кодировке делать сайт, чем отличается UTF-8 от windows-1251 и как ее прописывать в META Charset HTML-страницы сайта. Ответы на все эти вопросы в данной статье.

Что такое кодировка сайта и как она работает

Кодировку можно представить в виде таблицы, состоящей из разных букв, цифр и других символов понятных человеку, которые закодированы определенным образом. Когда вы открываете текстовый файл, к которым относятся в том числе HTML-страницы, то компьютер считывает из заголовка файла в какой кодировке он был сохранен и выводит текст в соответствующей кодировке преобразовывая компьютерные данные в вид понятный человеку сопоставляя эти данные с таблицей кодировки. Если информация о кодировке из заголовка файла совпадает с кодировкой в которой сохранены данные в HTML-странице, то пользователь видит привычные ему буквы, цифры и другие символы. Если же есть несовпадение, то в результате пользователю выводится непонятный набор символов, особенно часто это происходит в старых почтовых программах. Если пользователь получил письмо с непонятными крякозябрами, то просто перебирая разные кодировки, обычно получается угадать и выбрать ту, в которой написано письмо, и в результате непонятный набор символов превращается в понятный человеку текст.

То же самое происходит и с HTML-страницами сайта. Если документ был сохранен, например, в кодировке UTF-8, а в самом документе прописан META-тег указывающий что это кодировка windows-1251, то браузер опять же будет сопоставлять сохраненные в файле данные с таблицей указанной ему кодировки и так как символы закодированы по-разному, то браузер выведет вместо привычного текста непонятный набор символов или же часть букв может быть в нормальном виде, а другие буквы или символы могут выводиться, например, в виде знаков вопроса. Все выше сказанное относится в том числе и к отображению имен файлов.

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

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

Из предыдущего пункта вы уже знаете что такое кодировка и почему настолько важно правильно прописать ее в коде страниц сайта. Давайте теперь выясним какую из множества кодировок лучше выбрать для будущего сайта. Поскольку самой распространенной и наиболее понятной в освоении всегда была операционная система Windows, то большинство веб-разработчиков создавали HTML-страницы в кодировке windows-1251 (ANSI), которая использовалась по-умолчанию. Но windows-1251 поддерживает не очень большое количество букв и символов, а разработчики хотят использовать в своих текстах различные стрелочки, сердечки, квадратики и другие символы, в том числе есть необходимость совмещать слова из разных языков в одном документе, поэтому на смену ей уже давно пришла более расширенная UTF-8 и большинство разработчиков используют именно эту кодировку.

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

Сайт, независимо от того является ли он просто набором статических HTML-документов или сложных динамических скриптов генерирующих страницы на лету, размещается на веб-сервере, который также работает с определенной кодировкой. И если сервер выдает информацию в одной кодировке, а ваши страницы или скрипты сохранены в другой кодировке, то опять же могут быть проблемы с отображением страниц в браузере пользователя. Многие хостинги позволяют менять настройки и выбрать кодировку в соответствии с той, которая используется в файлах сайта, через панель управления или же прописать ее в файле.htaccess, если на хостинге используется популярный веб-сервер Apache.

Практически ни один современный сайт не обходится без использования базы данных MySQL и она также может стать источником проблем с кодировкой. Если файлы сайта сохранены в одной кодировке, а информация в базе данных в другой, то на странице та часть информации, которая выводится из базы данных может отображаться в виде все тех же знаков вопросов или других непонятных символов. Чтобы избежать проблем с кодировкой она должна быть одинаковой для веб-сервера, базы данных MySQL, в скриптах, в HTML-страницах сайта и в META-теге, который прописывается в HTML-коде. Если есть проблемы с отображением текста, то проверяйте на наличие проблемы все выше перечисленное.

META Charset HTML-документа

Чтобы сообщить браузеру и поисковым системам в какой кодировке сохранены страницы сайта в их коде прописывается META Charset.

Для кодировки windows-1251:

Заголовок страницы

Текст страницы


Для кодировки UTF-8:

Заголовок страницы

Текст страницы


Теперь вы знаете что такое кодировка сайта и где искать проблемы если в какой-либо части сайта неправильно отображается текст.

Копирование статьи запрещено.

15.03.2016

Пока нет


Всем привет!
Продолжаем изучать основы HTML. В этом уроке мы разберем, как указать HTML кодировку для сайта (веб-страницы).
Этот урок очень важен, так как незнание того, как указать кодировку для веб-страницы может привести к тому, что вашу страницу не смогут прочитать. Вы спросите: «Это как так, не смогут?».
Давайте я покажу, как выглядит мой блог с неправильной кодировкой:

Итак, HTML кодировка – это таблицы соответствия кодов и символов алфавита. То есть, наш компьютер по кодировке поменяет код на понятные читабельные буквы .

Чтобы сообщить браузеру, в какой кодировке находятся символы веб-страницы, необходимо прописать между тегами вот такой мета тег:

Обратите внимание, в коде есть слово «имя кодировки». Здесь нужно указать HTML кодировку.
Обычно это utf-8 или windows-1251 .

Кодировка для utf-8 :

Кодировка для windows-1251 :

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

Переходим к практике.

Как создать HTML документ с
кодировкой utf-8

«Все программы» => «Стандартные» => «Блокнот» :

</body> </html> </p><p> <head></head> вот этот мета-тег:</p><p> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </p><p> <html> <head> <title> Моя первая HTML-страничка на StepkinBlog.. </body> </html> </p><p>Жмите в блокноте <span>«Файл» => «Сохранит как…» </span>:</p> <p><img src='https://i0.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-3.png' width="100%" loading=lazy></p><p><br> Там, где пункт «Кодировка:» укажите «UTF-8» .<br> Жмите «Сохранить» :</p> <p><img src='https://i1.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-4.png' width="100%" loading=lazy></p><p>Увеличить изображение?</p> <h3><span>Как создать HTML документ с кодировкой windows-1251 </span></h3> <p>Открывайте стандартный блокнот. <span><i>«Все программы» => «Стандартные» => «Блокнот» </i> </span>.<br> Далее вставляете в блокнот <a href="/vhod-v-bios-na-vin-10-bazovyi-kod-chto-takoe-bios-standartnyi-vhod-pri.html">стандартный код</a> HTML:</p><p> <html> <head> <title> Моя первая HTML-страничка на StepkinBlog.. </body> </html> </p><p>Теперь указываем, в какой кодировке сохранена веб-страница. Для этого разместите между тегами <head></head> вот этот мета-тег:</p><p> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </p><p>Вот так должно получиться (строка №4 ):</p><p> <html> <head> <title> Моя первая HTML-страничка на StepkinBlog.. </body> </html> </p><p>Жмите в блокноте <span>«Файл» => «Сохранит как…» </span>:</p> <p><img src='https://i2.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-5.png' width="100%" loading=lazy></p> <p>Там, где пункт «Имя файла» напишите название веб-страницы на латинице и с расширением «.html» . Я думю, вы это помните еще с первых уроков.<br> Там, где пункт «Кодировка:» укажите «ANSI» .<br> Жмите «Сохранить» :</p> <p><img src='https://i1.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-6.png' width="100%" loading=lazy></p> <p>Вот и все!</p> <p>Большинство вебмастеров выбирают кодировку UTF-8 . Причины говорить не буду, так как боюсь нагрузить вас информацией, которая на вашем этапе познания HTML еще не нужна.</p> <p>Для примера в блокнте установите код:</p><p> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </p><p>И укажите при сохранении «ANSI» :</p> <p><img src='https://i1.wp.com/stepkinblog.ru/wp-content/uploads/2016/03/kak-ukazat-kodirovku-sajta-na-html-osnovy-html-dlya-nachinayushhix-urok-20-6.png' width="100%" loading=lazy></p> <p>Так как это неправильно, результат будет вот таким:</p> <p>Сохраняйте правильно ваши веб-страници во избежание вот таких результатов </p> <p>Предыдущая запись <br></span> <span>Следующая запись <br></p> <p>Кодировка <a href="/vklyuchit-korotkie-tegi-php-poluchenie-vseh-kartinok-iz-html-dokumenta.html">документа HTML</a> задается в текстовом редакторе. Например,</p><p>Блокнот в ОС Windows по умолчанию сохраняет текстовые файлы в кодировке Windows-1251.</p><p>Для того чтобы браузер правильно отобразил HTML-страницу, необходимо</p><p>задать правильную кодировку в специальном теге <b><meta> </b>.</p><p><i><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </i></p><p><i><meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </i></p><p>Если кодировка не будет указана, браузер попытается «угадать» ее, но не</p><p>всегда это заканчивается успехом. Пользователь может выбрать кодировку</p><p>самостоятельно в меню браузера (в Internet Explorer и <a href="/adres-nachalnoi-stranicy-mozilla-firefox-nachalnaya-stranica-mozilla-firefox-kak-izmenit.html">Mozilla Firefox</a>: Вид → Кодировка). При разработке сайта проблем с кодировкой следует избегать, т.к. большинство пользователей сразу же покинет страницу, увидев нечитаемый набор букв на экране.</p><h2>Специальные символы в html</h2><p>В HTML предусмотрен механизм вставки в документ любых символов Юникод – подстановки или сущности (англ. entities). Подстановки позволяют</p><p>употреблять символы, отсутствующие на клавиатуре или даже в используемой кодировке (т.е. даже используя кодировку Windows-1251 можно вставить букву греческого алфавита). Подстановки начинаются с символа амперсанда и записываются в виде DDDD; где DDDD – код символа в Юникоде в десятеричной системе счисления. Также можно записывать код в шестнадцатеричной системе счисления в форме HHHH; Для некоторых символов заданы специальные названия – мнемоники. Например, знак копирайта © может быть задан кодом © или © или мнемоникой ©.</p><h2>Основы css</h2><p>CSS (Cascading Style Sheets – каскадные таблицы стилей, произносится «си-эс-эс») – технология управления внешним видом элементов (тегов) веб-страницы. CSS предоставляет гораздо больше возможностей по оформлению страницы, чем HTML. Например, с помощью <a href="/dobavlyaem-css-stil-dlya-placeholder-kak-izmenit-cvet-teksta-podskazki-v-placeholder-s-pomoshchyu-stil.html">стилей CSS</a> можно убрать у ссылок подчеркивание, сделать у таблицы пунктирные границы или даже поменять курсор «мыши». Сейчас CSS используется практически на всех сайтах Всемирной паутины.</p><p><b>Синтаксис CSS </b></p><p>Рассмотрим синтаксис CSS. В стилях задается набор правил отображения в парах «свойство – значение», и то, к каким элементам их применять (селектор):</p><p>Селектор</p><p>свойство1: значение1;</p><p>свойство2: значение2;</p><p>свойство3: значение3 значение4;</p><p>Правила записываются внутри фигурных скобок и отделяются друг от друга точкой с запятой. Между свойствами и их значениями ставится двоеточие.</p><p>CSS, как и HTML, игнорирует пробелы. Можно добавлять комментарии, заключая их между /* и */.</p><p>Селекторы</p><p>Селектор определяет, к каким элементам (тегам) страницы будут применяться правила, заданные парами «свойство – значение».</p><p><u>В качестве селектора можно использовать </u>:</p><ol><p><i>Название тега </i> – тогда стиль применится ко всем таким тегам.</p> </ol><p><i>Пример </i><i>: </i></p><p><i>A {font-size: 12pt; text-decoration: none} </i></p><p><i>TABLE {border: black solid 1px} </i></p><p>Первая строчка этого CSS-кода задает всем ссылкам 12-й размер шрифта и убирает подчеркивание. На второй строчке указывается, что у всех таблиц граница будет черного цвета, сплошной (solid) и шириной 1 пиксель.</p><ol><p><i>Несколько тегов через запятую </i> – тогда стиль применится для всех перечисленных тегов.</p> </ol><p><i>Пример: </i></p><p><i>H1, H2, H3, H4, H5, H6 {color: red} /* делаем все заголовки красными */ </i></p><ol><p><i>Несколько тегов через пробел: </i></p> </ol><p><i>TABLE A {font-size: 120%} </i></p><p>Правило относится ко всем тегам A, вложенным в тег TABLE. Размер шрифта увеличится на 20% от базового.</p><ol><p><i>ID элемента </i>. В стилях <a href="/imei-kak-proverit-pomenyat-i-vosstanovit-unikalnyi-identifikator.html">уникальный идентификатор</a> указывается после знака # – правила применятся к тегу с атрибутом id="идентификатор". Пример:</p> </ol><p><i>#supersize {font-size: 200%} </i></p><p><i> </i><i>Справочник </i></p><p><i>HTML и CSS </i></p><p><u><b>Нельзя вносить в документ несколько элементов с одинаковым id! </b> </u></p><ol><p><i>Символ * </i> – правила применятся ко всем элементам документа.</p><p><i>Классы </i></p> </ol><p><b>Классы </b></p><p>Часто нужно, чтобы стиль применялся не ко всем тегам на странице, а только к некоторым элементам (например, не ко всем ссылкам на странице, а только к тем, которые расположены в меню сайта). Для этого используются классы: <i>ТЕГ.имя_класса { … } </i></p><p>Правила, указанные после такого селектора, будут действовать только на теги с атрибутом class="имя_класса": <i><ТЕГ class="имя_класса"> … </ТЕГ> </i></p><p>Можно не указывать имя тега, тогда правила будут применятся ко всем тегам с подходящим значением атрибута class.</p><p>Рассмотрим пример:</p><p>Для всех тегов с атрибутом class="class1" добавим подчеркивание текста</p><p>и уменьшим размер шрифта, а для тега <B> уберем подчеркивание.</p><p><i>.class1 {text-decoration: underline; font-size: 80%} </i></p><p><i>A.class1 {text-decoration: none;} </i></p><p><i>В HTML-коде укажем для тегов имя класса: </i></p><p><i>< </i><i>h </i><i>1 </i><i>class </i><i>=" </i><i>class </i><i>1">Мои любимые сайты</ </i><i>h </i><i>1> </i></p><p><i> </i></p><p><i>Яндекс </i><i><br> </i></p><p><i><a href="http://google.com" class="class1"> </i></p><p><i>Google</a><br> </i></p><p><i>Redut.ru </i></p> <p>В этой статье я постараюсь поставить все точки над «и» (а так же над «i») в вопросе выбора кодировки для создаваемой HTML-страницы.</p> <p>Когда я только начинал заниматься сайтостроительством у меня постоянно возникали проблемы из-за этих кодировок. Сохранишь HTML-страницу, выгрузишь на сервер, открываешь, бах, а там кракозябры. Ну вот и здравствуйте, приехали.</p> <p>Или в среде отладки (например, локальная среда разработки « ») все нормально, а с хостинга опять они, кракозябры проклятые, нагло на меня смотрят.</p> <p>С движками сколько мучений было. Вдруг, непонятно почему, родные русские буквы превращаются в …</p> <p>Сейчас мы с этим делом подробно разберемся и вы будете четко знать<b> в какую кодировку сохранять HTML-страницу </b> и <b>посредством каких инструментов </b>.</p> <p>Для укрепления нашего взаимопонимания определимся с понятием <b>кодировка </b>. Так вот, <b>кодировка </b> - это таблица соответствия машинных кодов и символов алфавита. Есть какая-то последовательность машинных символов, которую <a href="/taimer-vyklyucheniya-kompyutera-xp-umnyi-taimer-vyklyucheniya-kompyutera.html">умный компьютер</a>, в соответствии с выбранной кодовой таблицей, заменяет на понятные нам буквы.</p> <p>В 90-е годы прошлого века (древность какая, а я как сейчас помню календарь 1991 года на стене) существовало 4-е кодировки для PC и еще одна, своя собственная, для Мака. Ирония судьбы заключается в том, что во всех этих кодировках символы латиницы ставились в соответствие машинным кодам по одному и тому же алгоритму, а вот по поводу кирилицы каждая из кодировок имела свое собственное мнение.</p> <p>Вся эта путаница и привела к появлению кракозябров. Например, если слово «<i>Вопрос </i>», набранное в кодировке windows-1251, отобразить кодировкой KOI8-R, получится слово «<i>бНОПНЯ </i>».</p> <p>Слава Богу, 90-е годы уже далеко позади и из пяти бредокодировок осталось всего 2-е нормальных. Но этого вполне достаточно, чтобы начинающий веб-мастер заблудился в двух соснах. Ничего, не переживайте, сейчас я вас выведу из этого леса!</p> <p>На данный момент выбор для <b>кодировки HTML-документа </b> стоит между windows-1251 и utf-8. А теперь внимание: utf-8 гораздо богаче, мощнее и за ней будущее. Так что наши HTML-файлы мы будем сохранять именно в utf-8.</p> <p>Обосную свои слова;). UTF-8 содержит в своей таблице соответствия такие знаки, как <span><i>→ </i> </span><span><i>← </i> </span>↓. А в windws-1251 вместо этих символов вот что: <i>> <v^ </i>. А еще в utf-8 есть знак "евро"; а еще utf-8 позволяет в одном HTML-файле совмещать кучу разнообразных специфических символов, используемых в таких языках как грузинский, иврит, китайский, японский; а еще <b>utf-8 </b><b> в кодировках HTML </b> - это правило хорошего тона.</p> <p>Надеюсь я вас убедил и вы будете использовать Юникод (кстати «utf-8» и «Юникод» - это синонимы или, если быть более точным, utf-8 - это одна из кодировок семейства Юникод, которая снискала популярность в среде веб-разработчиков).</p> <p>Теперь пристально посмотрим на инструменты перекодирования файлов, которые я рекомендую вам использовать, уважаемый читатель.</p> <h2>Инструменты для работы с кодировками HTML файлов</h2> <p>Собственно, их всего три:</p> <ul><li>PSPad . Бесплатный текстовый редактор, мой любимый.</li> <li> . Еще один хороший текстовый редактор и тоже бесплатный.</li> <li>Dreamweaver. Ну с Dreamweaver-ом вы с вами знакомы из моих .</li> </ul><p><b>Загружаем какой-то HTML-файл в PSPad. </b> И как же нам понять, что за кодировка у загруженного подопытного? Очень просто в строке состояния (внизу) все четко написано.</p> <p><img src='https://i2.wp.com/i701.photobucket.com/albums/ww11/amorkovin/pspad1.jpg' width="100%" loading=lazy></p><p>Кодировка открытого HTML-файла windows-1251</p> <p><img src='https://i1.wp.com/i701.photobucket.com/albums/ww11/amorkovin/pspad22.jpg' width="100%" loading=lazy></p> <p><b>А теперь, создавая новый HTML-документ, позаботимся о его кодировке. </b></p> <p>Идем в меню моего любимого <i>PSPad-а </i>. Нас интересует пункт <i>Формат </i>. В нем-то мы и поставим галку напротив кодировки utf-8.</p> <p><img src='https://i2.wp.com/i701.photobucket.com/albums/ww11/amorkovin/pspad3.jpg' width="100%" loading=lazy></p> <p><img src='https://i0.wp.com/i701.photobucket.com/albums/ww11/amorkovin/pspad4.jpg' width="100%" loading=lazy></p><p>А так кодировка будующего файла - windows-1251</p> <p>Теперь о том как <b>изменить кодировку файла HTML </b>. Да оказывается очень просто:</p> <p><img src='https://i2.wp.com/i701.photobucket.com/albums/ww11/amorkovin/pspad5.jpg' width="100%" loading=lazy></p> <p>Нужно кликнуть по требуемой кодировке в пункте меню <i>Формат </i> и кодировка сменится. После этого сохраняйте файл, он перекодирован, дело сделано.</p> <p>Что касается <b>Notepad++ </b> все очень похоже на вышеописанную ситуацию. Только для работы с кодировками нужно использовать пункт меню <i>Кодировки. </i></p> <p><img src='https://i2.wp.com/i701.photobucket.com/albums/ww11/amorkovin/notepad1.jpg' align="center" width="100%" loading=lazy>Вся разница заключается в том, что в случае Notepad++ появляются, специально разработанные для преобразования кодировок, пункты меню <i>Преобразовать.. </i>. (лишние на мой взгляд, в PSPad все проще и поэтому я им пользуюсь). Соответственно, именно по ним и нужно кликать при желании поменять кодировки у нашего HTML-файла.</p> <p>Кроме всего прочего, при сохранении в utf-8 у нас есть выбор: <b>без BOM </b> или <b>с BOM </b>. Нам, как веб-мастерам, нужно использовать кодировку <b>UTF-8 (без BOM) </b>.</p> <p>Вот что нам ответит Википедия на вопрос «что такое BOM »</p> <blockquote><p>Для определения формата представления Юникода в текстовом файле используется приём, по которому в начале текста записывается символ U+FEFF (неразрывный пробел с нулевой шириной), также именуемый меткой порядка байтов (англ. Byte Order Mark, BOM). Этот способ позволяет различать UTF-16LE и UTF-16BE, поскольку символа U+FFFE не существует. Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов.</p> </blockquote> <p>Если прочитать приведенный текст 10 раз, почесать затылок, то становится понятно: <b>для utf-8 BOM нам НЕ нужен </b>. Кроме того, если сохранить файл с php-скриптом в кодировку <b>utf-8 с BOM </b>, то он не будет работать, потому что обработчик не поймет, что это за ерунда такая написана в начале файла-скрипта (я имею ввиду тот самый неразрывный пробел с нулевой шириной).</p> <p>Так-так, осталось пристально взглянуть на <b>Dreamweaver </b>.</p> <p>Создавая новый файл, обращайте внимание на то, в какой кодировке он будет создан. Для этого в окне создания нового документа <i>File → New (Ctrl+N) </i> воспользуйтесь кнопкой <i>Preferences </i>...</p> <p><img src='https://i1.wp.com/i701.photobucket.com/albums/ww11/amorkovin/dr.jpg' align="center" width="100%" loading=lazy></p> <p>И посмотрите, что задано в качестве кодировки по умолчанию:</p> <p><img src='https://i1.wp.com/i701.photobucket.com/albums/ww11/amorkovin/dr2.jpg' width="100%" loading=lazy></p><p>Кодировка создаваемого HTML-файла по умолчанию в Dreamweaver</p> <p><b>Перекодировать открытый HTML-файл в Dreamweaver </b> можно в диалоге <i>Page Properties, </i>который запускается из меню <i>Modify </i><i> → </i><i>Page Properties (Ctrl + J). </i></p> <p><img src='https://i1.wp.com/i701.photobucket.com/albums/ww11/amorkovin/dr3.jpg' align="center" width="100%" loading=lazy></p> <p>Выбирайте требуемую кодировку, нажимайте <i>ОК </i> и все, задача по перекодированию выполнена (а вот BOM все так же ненужен, не ставьте галку).</p> <h2>Определение кодировки браузерами</h2> <p>Итак, наш HTML-файл сохранен в выбранную нами кодировку. Теперь давайте разберемся с вопросом: <b>каким образом браузер узнает о применяемой в данном HTML-файле кодировке? </b></p> <p>Здесь есть три варианта:</p> <p><b>1. Мы сами сообщаем браузеру о том, какая кодировка установлена для данного HTML файла. </b> Делается это посредством META-тега</p><p> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </p><p>В приведенном примере браузеру дается указание, что загруженный HTML-файл сохранен в кодировке <b>utf-8 </b>.</p> <p>Если HTML-файл сохранен в кодировку windows-1251, то:</p><p> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> </p><p>Кстати, при перекодировке файлов не забывайте изменять директивы в META-теге на актуальные. Dreamweaver, при изменении кодировки, делает это автоматически, а в других текстовых редакторах вам нужно самим ставить в соответствие примененную кодировку и директиву META-тега.</p> <p>Полный HTML выглядит следующим образом (привожу его для понимания вопроса «в каком месте указывается META-тег с директивой кодировки» внимание на 4-ю строку):</p><p> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document Ну и т.д.

2. При помощи файла.htaccess. Иногда сервер насильно передает заголовки для загружаемых HTML-файлов и сообщает браузеру кодировку по умолчанию. В этом случае браузер не обращает внимания на директивы в META-теге, а отображает HTML-файл в той кодировки, которую сообщил сервер. Чтобы файл загружалсяв той кодировке, которая нужна вам (часто хостинг насильно указывает кодировку windows-1251), в корне хостинг-директории создается файл с именем «.htaccess».

Файл этот предназначен для дополнительной конфигурации сервера. Действие.htaccess-директив распространяется на все файлы и подкаталоги, которые находятся в том каталоге, куда вы сохранили файл.htaccess.

Создать этот файл можно, например, в Total Commander-е, нажав горячее сочетание клавиш Shift+F4 и указав имя создаваемому файлу .htaccess . Далее в текстовом редакторе указываются директивы дополнительных настроек кодировки по умолчанию.

Для HTML-файлов в кодировке utf-8 в.htaccess нужно написать одну строку:

AddDefaultCharset UTF-8

Для HTML-файлов в кодировке Windows-1251 :

AddDefaultCharset Windows-1251

Если ваш хостинг хитро-мудрый и не обращает внимания на эти директивы, то можно попробовать:

Charsetdisable on AddDefaultCharset Off

Если и это не дало результата, то просто спросите у своего хостера, чего вам делать, чтобы отключить кодировку по умолчанию:). Все это зависит от конкретных настроек сервера у хостинг-провайдера.

3. PHP-инструкция, указывающая кодировку по умолчанию. В файле, который нужно отобразить в желаемой кодировке, не смотря на настройки сервера хостинг-провайдера, в самом начале указывается директива с php-кодом:

Этот php-код отправит заголовок сервера с указанием кодировки по умолчанию для браузера. В приведенном примере, для отображения страницы, будет применяться кодировка utf-8.

Против такого лома, обычно, приемов в настройках сервера хостинг-провайдера не остается.

Хочу заметить, что для обработки php-инструкций сервером, html-файл должен иметь расширение .php (например index.php).

Есть еще вопросы по кодировкам? Пишите в комментарии. Нужно решить эти проблемы раз и на всегда 🙂