Изменение кодировки в html. HTML кодировка. В какую кодировку сохранять web-страницу
15.03.2016
Пока нет
Всем привет!
Продолжаем изучать основы HTML. В этом уроке мы разберем, как указать HTML кодировку
для сайта (веб-страницы).
Этот урок очень важен, так как незнание того, как указать кодировку для веб-страницы может привести к тому, что вашу страницу не смогут прочитать. Вы спросите: «Это как так, не смогут?».
Давайте я покажу, как выглядит мой блог с неправильной кодировкой:
Итак, HTML кодировка – это таблицы соответствия кодов и символов алфавита. То есть, наш компьютер по кодировке поменяет код на понятные читабельные буквы .
Чтобы сообщить браузеру, в какой кодировке находятся символы веб-страницы, необходимо прописать между тегами
вот такой мета тег:
Обратите внимание, в коде есть слово «имя кодировки». Здесь нужно указать HTML кодировку.
Обычно это utf-8
или windows-1251
.
Кодировка для utf-8 :
Кодировка для windows-1251 :
Если забыть указать браузеру, в какой кодировке сайт или веб-страница, то браузер попытается определить кодировку автоматически, но не всегда у него это выходит правильно. В итог результат будет такой, который я показал на картинке выше.
Переходим к практике.
Как создать HTML документ с
кодировкой utf-8
«Все программы» => «Стандартные» => «Блокнот» :
вот этот мета-тег:
Жмите в блокноте «Файл» => «Сохранит как…» :
Там, где пункт «Кодировка:»
укажите «UTF-8»
.
Жмите «Сохранить»
:
Увеличить изображение?
Как создать HTML документ с кодировкой windows-1251
Открывайте стандартный блокнот. «Все программы» => «Стандартные» => «Блокнот»
.
Далее вставляете в блокнот стандартный код HTML:
Теперь указываем, в какой кодировке сохранена веб-страница. Для этого разместите между тегами
вот этот мета-тег:
Вот так должно получиться (строка №4 ):
Жмите в блокноте «Файл» => «Сохранит как…» :
Там, где пункт «Имя файла»
напишите название веб-страницы на латинице и с расширением «.html»
. Я думю, вы это помните еще с первых уроков.
Там, где пункт «Кодировка:»
укажите «ANSI»
.
Жмите «Сохранить»
:
Вот и все!
Большинство вебмастеров выбирают кодировку UTF-8 . Причины говорить не буду, так как боюсь нагрузить вас информацией, которая на вашем этапе познания HTML еще не нужна.
Для примера в блокнте установите код:
И укажите при сохранении «ANSI» :
Так как это неправильно, результат будет вот таким:
Сохраняйте правильно ваши веб-страници во избежание вот таких результатов
Предыдущая запись
Следующая запись
Декодером, чтобы узнать кодировку файла и раскодировать символы. Для этого откройте программу-браузер, перейдите по ссылке http://www.artlebedev.ru/tools/decoder/ . Данный декодер был создан для раскодировки сообщений электронной почты, чтобы помочь пользователям прочитать непонятные почтовые сообщения.
Чтобы узнать кодировку текста, скопируйте его в буфер обмена, далее нажмите в поле декодера правую кнопку мыши и выберите команду «Вставить». Далее нажмите на кнопку «Расшифровать». В поле появится раскодированный текст, а ниже на странице будет указана исходная кодировка и та кодировка, в которую текст был перекодирован.
Скачайте специальную программу для определения кодировки, а также для перекодирования текста, например, программу Tcode. Для этого перейдите по ссылке http://it.sander.su/download.php , нажмите ссылку TCode, дождитесь загрузки файла . После завершения закачки распакуйте архив в любую папку, запустите исполняемый файл.
Вставьте текст из файла , для которого необходимо узнать кодировку , либо выберите кнопку на панели инструментов «Открыть файл». Далее нажмите кнопку внизу экрана «Перекодировать». Текст из файла будет автоматически перекодирован в нужную кодировку . Исходная кодировка отобразится в строке состояния, а также будет отображен процент распознавания символов. При наведении на эту строку можно определить, какие символы не были программой.
Установите программу AkelPad, способную распознавать кодировки файлов. Для этого перейдите по ссылке http://akelpad.sourceforge.net/ru/download.php и выберите нужную версию для загрузки. После установки запустите программу. Вставьте текст из файла для определения кодировки.
Выберите меню «Кодировка» и команду «Определить кодировку » либо вызовите данную команду сочетанием клавиш Alt+F5. Появится окно, в котором будет указана исходная кодировка, а также предложена возможность перекодирования текста в нужную для прочтения текста кодировку .
Источники:
- Кодировка текста ASCII
Иногда требуемый файл или веб-страница не открывается, а при ее отображении видны только непонятные символы. Бывают случаи, когда текстовый редактор или браузер не может определить необходимую кодировку . В таком случае ее приходится подбирать самому при помощи дополнительных утилит.
Вам понадобится
- Текстовый редактор, работающий с большим числом кодировок, или программа-декодер.
Инструкция
Если файл некорректно открылся в одном редакторе, это вовсе не , что он имеет неправильную кодировку . Стоит попробовать тот же файл в программе. Одной из утилит, которые в большинстве случаев точно определяют необходимый набор символов, является редактор Notepad++.
Также существуют , которые способны расшифровывать русские тексты в разных кодировках. Несомненно, лидером является приложение «Штирлиц» для Windows. Оно знает практически все кодовые и знает множество методов транслитерации. Более того эта программа способна производить операции трансформации текста из исходного формата в любой другой.
В Linux, чтобы открыть какой-либо файл, содержащий незнакомую кодировку , можно воспользоваться некоторыми консольными командами преобразования или готовыми программами. Под QT существует приложение QTexTransformer, которое поможет определить кодировки и произвести соответствующие преобразования.Под Linux существует множество лингвистических модулей, написанных на Perl. Например, Lingua DetectCharset или DetectCyrillic (для определения кириллических символов). Хорошо отображает файлы Windows программа mousepad. Для конвертирования также можно воспользоваться консольной «econv путь_до_файла», которая самостоятельно определит текущую кодировку и преобразует ее к текущей локали.
Полезный совет
Хорошо с выбором нужной кодировки справляется текстовый процессор Word. Даже если файл не открылся в других редакторах, в нем сработает функция «Автовыбор».
Источники:
- Один из самых известных декодеров текста в 2019
Наверное, каждый хоть раз сталкивался с такой проблемой, как неверно определенная кодировка . На электронный почтовый ящик приходит письмо с «нечитаемыми» символами вместо обычных русских букв или вам передают текстовый документ, а прочитать его не представляется возможным, поскольку он заполнен непонятными «каракулями». Все эти случаи – примеры неверно определенной кодировки, то есть отправитель пользовался одной кодировкой при создании послания или документа, а вы пытаетесь открыть текст в другой.
Вам понадобится
- Компьютер под управлением операционной системы, доступ в интернет, текстовый редактор (например, AkelPad)
Инструкция
Для определения можно воспользоваться несколькими способами. Один из них – специальными -сервисами по определению кодировке в . К примеру, зайдите на сайт http://charset.ru/ , в специальное поле вставьте «нечитаемый» и нажмите кнопку «Раскодировать».
Попробуйте определить кодировку автоматически с помощью текстового редактора. Дело в том, что многие текстовые редакторы (например, AkelPad) могут автоматически распознать кодировку «нечитаемого» . Для этого выберите в верхнем меню «Кодировки» - «Определить кодировку» или же нажмите ALT+F5 (в текстовом редакторе AkelPad).
Источники:
- AkelPad
Текст в файле, электронном письме, на веб-странице может быть набран на любом языке и сохранен в различной компьютерной кодировке. Дело состоит не только в многообразии современных кодировок, которые более-менее упорядочены, но и хранении документов, представляющих в первую очередь историческую ценность. Также встречаются случаи, когда документ несколько раз был сохранен в различных кодировках. Если текст открывается в виде непонятного набора символов, его необходимо привести в вид, доступный для чтения.
Задаём набор символов
Мета-тег
Нужно добавить на каждую страницу (или в шаблон шапки) специальный мета-тег, сообщающий браузеру о том, какой набор символов ему использовать для отображения текстов. Тег этот стандартный и выглядит обычно так:
charset=UTF-8 » />
charset=»utf-8″ /> (вариант для HTML 5)
Надо вставить его в раздел
— лучше в самое начало, сразу после открывающего :Мета-тег кодировки
Через.htaccess (если ничего не помогает)
Обычно первых двух вариантов достаточно и браузеры отображают текст как надо . Но с некоторыми из них могут быть проблемы и поэтому можно прибегнуть к помощи файла.htaccess .
Для этого в нём нужно прописать такую строчку:
AddDefaultCharset utf-8
Вот и всё. Если вы примените последовательно 3 этих способа задания кодировки на своём проекте, то вероятность того, что всё будет отображено как надо , близка к 100 %.
Как «увидеть», что скрывается за непонятными символами на сайте?
Если вы зашли на веб-страницу, видите «кракозябры» и хотите увидеть нормальный текст, то тут только два пути:
- сообщить сайтовладельцу, чтобы всё настроил как следует
- попытаться угадать кодировку самостоятельно. Делается это стандартными средствами браузеров. В Chrome, например, нужно в меню щёлкнуть «Инструменты => Кодировка» и из огромного списка выбрать подходящий набор символов (т.е. угадать).
К счастью, практически все современные веб-проекты делаются в кодировке UTF-8, которая является «универсальной» для разных алфавитов и поэтому всё менее и менее вероятно увидеть эти непонятные символы в Интернет.
Первая серьёзная проблема, с которой сталкиваются большинство новичков при , связана с набором символов (англ. character set ). Выражается эта проблема с кодировкой в, так называемых, «кракозябриках», которые мы получаем вместо указанных в HTML-файле символов. В данной статье я хочу остановиться на проблеме с кодировкой подробнее, постараться расставить всё по полочкам и дать варианты решения.
- Что такое кодировка?
- Кодировка файла (редактирование в Notepad++)
- Кодировка отображения (просмотр в браузере)
- Как указать кодировку HTML-страницы? (метатег charset)
- Всё ещё есть проблема с кодировкой? (header charset в php)
Что такое кодировка?
Условно говоря, каждый символ (знак) состоит из кода и картинки . Здесь код - это уникальный идентификатор символа в наборе символов, который определяется выбранной кодировкой , а картинка - это визуальное представление символа, которое содержится в файле шрифта в соответствующей коду символа ячейке.
Другими словами, кодировка (англ. charset ) - это набор взаимосвязей кодов символов с их визуальными представлениями в шрифте.
Кодировка файла
HTML-страница представляет собой обычный текстовый файл, кодировка которого выбирается при его создании и/или сохранении на запоминающее устройство (жёсткий диск, флэшка и т.д.) .
В случае с Notepad++, кодировка нового документа задаётся в настройках текстового редактора. Выбираем в меню: Опции > Настройки… - и переходим на вкладку «Новый документ ». Здесь нас интересует секция «Кодировка ». По умолчанию, выбрана кодировка ANSI .
Напомню, что это кодировка, в которой будет храниться HTML-файл.
Впрочем, Вы всегда можете преобразовать кодировку HTML-страницы, используя соответствующие функции текстового редактора. Например, в Notepad++ для этого кликните пункт меню «Кодировки » и выберите нужное преобразование.
В данном случае файл был в кодировке ANSI и я преобразовал его в UTF-8 (без BOM) . О том, что такое этот BOM Вы можете прочитать в моей статье: PHP: как удалить BOM в WordPress - проследовав по .
Кодировка отображения
Важно разделять кодировку файла и кодировку отображения . Независимо от того, в какой кодировке хранится файл, он может быть отображен и в любой другой кодировке. Это и является одной из причин проблем с кодировкой.
Например, если Вы сохранили HTML-страницу в кодировке ANSI и откроете её в браузере, вместо русских символов Вы можем получить, так называемые, «кракозябрики».
В данном случае нам надо убедиться, что кодировка файла совпадает с кодировкой отображения файла в браузере. Для этого в Firefox кликните иконку меню, а потом пункт «Кодировка ». Если такого у Вас нет, кликните пункт «Изменить » и добавьте элемент «Кодировка » в меню.
Как вы видите, браузер отображает файл в кодировке «Юникод » (например, UTF-8 ) , в то время как файл был сохранён в кодировке ANSI (например, Windows-1251 ) . Выбрав нужную кодировку, мы получим нужный нам результат.
В случае с Notepad++ также имеется возможность выбора кодировки отображения. Для этого кликните пункт меню «Кодировки », а потом нужный вариант используемой для отображения кодировки.
В данном случае я изменил кодировку отображения ANSI на UTF-8 (без BOM) .
Как указать кодировку HTML-страницы?
И так, мы уже разобрались с тем, что такое кодировка и в чём состоит отличие кодировки файла и кодировки отображения. Теперь нам нужно решить проблему с кодировкой, которая заключается в неправильной интерпретации браузером (или любым другим клиентом) кодировки HTML-страницы.
Почему возникают проблемы с кодировкой? Определить кодировку HTML-страницы не просто, а зачастую и не возможно, т.к. у того же браузера нет информации о ней или она указана неправильно.
Для того чтобы указать кодировку HTML-страницы используется специальный метатег. В HTML5 он имеет следующий урезанный вид:
В данном случае указана кодировка UTF-8 (Юникод) .
В более старых версиях HTML этот метатег имеет следующий вид:
Этот метатег создаёт HTTP-заголовок Content-Type , в котором указывается тип документа text/html и его кодировка Windows-1251 (ANSI) .
Лично я рекомендую использовать именно этот вариант, т.к. с ним будет меньше всего проблем. Главное чтобы такой метатег присутствовал в секции HEAD , и указанная в нём кодировка соответствовала кодировке файла. В большинстве случаев этого будет достаточно.
Всё ещё есть проблема с кодировкой?
В некоторых случаях указать метатег с кодировкой HTML-страницы будет недостаточно. Такая проблема может быть вызвана настройками самого сервера, на котором находится файл HTML-страницы. Дело в том, что сервер способен выдавать свой HTTP-заголовок Content-Type , который будет, условно говоря, иметь приоритет перед метатегом.
В данном случае эту проблему можно решить путём внесения изменений в настройки сервера. Я не буду вдаваться в детали данного вопроса и порекомендую лишь отключать всю эту перекодировку через файл .htaccess , например:
CharsetDisable Off
Также можно производить изменения HTTP-заголовка Content-Type и программными средствами. В том же PHP для этого используется функция header() , например:
header("Content-Type: text/html; charset=UTF-8");
Обращаю Ваше внимание на то, что указание HTTP-заголовков должно идти до вывода какой-то информации на экран, в противном случае Вы получите сообщение об ошибке.
Позже ASCII
была расширена (изначально она не использовала все 8 бит), поэтому появилась возможность использовать уже не 128, а 256 (2 в 8 степени) различных символов, которые можно закодировать в одном байте информации.
Такое усовершенствование позволило добавлять в кодировку ASCII
символы национальных языков разных стран, помимо уже существующей латиницы.
Вариантов расширенной кодировки ASCII
существует очень много по причине того, что языков в мире тоже немало. Думаю, что многие из вас слышали о такой кодировке, как KOI8 (Код Обмена Информацией, 8 бит) — это тоже расширенная кодировка ASCII
. KOI8 включала в себя цифры, буквы латинского и русского алфавита, а также знаки пунктуации, спецсимволы и псевдографику.
Кодировка ISO
Организация Международных стандартов (International Standards Organization) создала диапазон кодировок для различных алфавитов/языков.
Кодировка | Описание |
---|---|
ISO 8859-1 (Latin-1) | Расширенная латиница, включающая символы большинства западноевропейских языков (английский, датский, ирландский, исландский, испанский, итальянский, немецкий, норвежский, португальский, ретороманский, фарерский, шведский, шотландский (гэльский) и частично голландский, финский, французский), а также некоторых восточноевропейских (албанский) и африканских языков (африкаанс, суахили). В Latin-1 отсутствуют знак евро и заглавная буква Ÿ. Эта кодовая страница считается кодировкой по умолчанию для HTML-документов и сообщений электронной почты. Также этой кодовой странице соответствуют первые 256 символов Юникода. |
ISO 8859-2 (Latin-2) | Расширенная латиница, включающая символы центральноевропейских и восточноевропейских языков (боснийский, венгерский, польский, словацкий, словенский, хорватский, чешский). В Latin-2, как и в Latin-1, отсутствуют знак евро. |
ISO 8859-3 (Latin-3) | Расширенная латиница, включающая символы южноевропейских языков (мальтийский, турецкий и эсперанто). |
ISO 8859-4 (Latin-4) | Расширенная латиница, включающая символы североевропейских языков (гренландский, эстонский, латышский, литовский и саамские языки). |
ISO 8859-5 (Latin/Cyrillic) | Кириллица, включающая символы славянских языков (белорусский, болгарский, македонский, русский, сербский и частично украинский). |
ISO 8859-6 (Latin/Arabic) | Символы, используемые в арабском языке. Символы других языков с письмом на основе арабского не поддерживаются. Для корректного отображения текста в кодировке ISO 8859-6 требуется поддержка двунаправленного письма и контекстно-зависимых форм символов. |
ISO 8859-7 (Latin/Greek) | Символы современного греческого языка. Может использоваться также для записи древнегреческих текстов в монотонической орфографии. |
ISO 8859-8 (Latin/Hebrew) | Символы современного иврита. Используется в двух вариантах: с логическим порядком следования символов (требует поддержки двунаправленного письма) и с визуальным порядком следования символов. |
ISO 8859-9 (Latin-5) | Вариант Latin-1, в котором редко используемые символы исландского языка заменены на турецкие. Используется для турецкого и курдского языков. |
ISO 8859-10 (Latin-6) | Вариант Latin-4, более удобный для скандинавских языков. |
ISO 8859-11 (Latin/Thai) | Символы тайского языка. |
ISO 8859-13 (Latin-7) | Вариант Latin-4, более удобный для балтийских языков. |
ISO 8859-14 (Latin-8) | Расширенная латиница, включающая символы кельтских языков, таких как шотландский (гэльский) и бретонский. |
ISO 8859-15 (Latin-9) | Вариант Latin-1, в котором редко используемые символы заменены на необходимые для полной поддержки финского, французского и эстонского языков. Кроме того, в Latin-9 был добавлен знак евро. |
ISO 8859-16 (Latin-10) | Расширенная латиница, включающая символы южноевропейских и восточноевропейских (албанский, венгерский, итальянский, польский, румынский, словенский, хорватский), а также некоторых западноевропейских языков (ирландский в новой орфографии, немецкий, финский, французский). Как и в Latin-9, в Latin-10 был добавлен знак евро. |
Для документов на английском и большинстве других западноевропейских языков, широко поддерживается кодирование ISO-8859-1 .
В HTML ISO-8859-1
является кодировкой по умолчанию (в XHTML и в HTML5 кодировкой по умолчанию является UTF-8).
При использовании кодировки страницы, отличной от ISO-8859-1, вам необходимо указать это в теге
.
Для HTML4:
Для HTML5:
Примером ANSI-кодировки является всем известная Windows-1251 .
Windows-1251
выгодно отличается от других 8 битных кириллических кодировок (таких как CP866 и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только знак ударения). Она также содержит все символы для других славянских языков: украинского, белорусского, сербского, македонского и болгарского.
Ниже приведены десятичные значения символов кодировки Windows-1251
.
Для отображения символов таблицы в HTML-документе воспользуйтесь следующим синтаксисом:
&# + код + ;
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8. |
Ђ
402 |
Ѓ
403 |
‚
201A |
ѓ
453 |
„
201E |
…
2026 |
†
2020 |
‡
2021 |
€
20AC |
‰
2030 |
Љ
409 |
‹
2039 |
Њ
40A |
Ќ
40C |
Ћ
40B |
Џ
40F |
9. |
ђ
452 |
‘
2018 |
’
2019 |
“
201C |
”
201D |
2022 |
–
2013 |
-
2014 |
™
2122 |
љ
459 |
›
203A |
њ
45A |
ќ
45C |
ћ
45B |
џ
45F |
|
A. |
A0 |
Ў
40E |
ў
45E |
Ј
408 |
¤
A4 |
Ґ
490 |
¦
A6 |
§
A7 |
Ё
401 |
©
A9 |
Є
404 |
«
AB |
¬
AC |
AD |
®
AE |
Ї
407 |
B. |
°
B0 |
±
B1 |
І
406 |
і
456 |
ґ
491 |
µ
B5 |
¶
B6 |
·
B7 |
ё
451 |
№
2116 |
є
454 |
»
BB |
ј
458 |
Ѕ
405 |
ѕ
455 |
ї
457 |
C. |
А
410 |
Б
411 |
В
412 |
Г
413 |
Д
414 |
Е
415 |
Ж
416 |
З
417 |
И
418 |
Й
419 |
К
41A |
Л
41B |
М
41C |
Н
41D |
О
41E |
П
41F |
D. |
Р
420 |
С
421 |
Т
422 |
У
423 |
Ф
424 |
Х
425 |
Ц
426 |
Ч
427 |
Ш
428 |
Щ
429 |
Ъ
42A |
Ы
42B |
Ь
42C |
Э
42D |
Ю
42E |
Я
42F |
E. |
а
430 |
б
431 |
в
432 |
г
433 |
д
434 |
е
435 |
ж
436 |
з
437 |
и
438 |
й
439 |
к
43A |
л
43B |
м
43C |
н
43D |
о
43E |
п
43F |
F. |
р
440 |
с
441 |
т
442 |
у
443 |
ф
444 |
х
445 |
ц
446 |
ч
447 |
ш
448 |
щ
449 |
ъ
44A |
ы
44B |
ь
44C |
э
44D |
ю
44E |
я
44F |
Кодировки стандарта UNICODE
Юникод (англ. Unicode) — стандарт кодирования символов, позволяющий представить знаки почти всех письменностей мира, и специальных символов. Представляемые в юникоде символы кодируются целыми числами без знака. Юникод имеет несколько форм представления символов в компьютере: UTF-8, UTF-16 (UTF-16BE, UTF-16LE) и UTF-32 (UTF-32BE, UTF-32LE). (Англ. Unicode transformation format - UTF).
UTF-8
— это в настоящее время распространённая кодировка, которая нашла широкое применение в операционных системах и веб-пространстве. Текст, состоящий из символов Unicode с номерами меньше 128 (область с кодами от U+0000 до U+007F), содержит символы набора ASCII
с соответствующими кодами. Далее расположены области знаков различных письменностей, знаки пунктуации и технические символы. Под символы кириллицы выделены области знаков с кодами от U+0400 до U+052F, от U+2DE0 до U+2DFF, от U+A640 до U+A69F.
Кодировка UTF-8 является универсальной и имеет внушительный резерв на будущее. Это делает ее наиболее удобной кодировкой для использования в интернете.
Please enable JavaScript to view the