W3docs

ISO-8859-1

ISO-8859-1 (Latin-1) — устаревшая однобайтовая кодировка. Узнайте о 256 кодовых позициях, обработке браузерами как Windows-1252 и таблице символов.

ISO-8859-1 (названная в честь Международной организации по стандартизации, также известная как Latin-1) — это устаревшая однобайтовая кодировка символов. На этой странице объясняется, что она собой представляет, где вы с ней ещё сталкиваетесь, неочевидный способ, которым браузеры её обрабатывают, и полная таблица символов и мнемоник.

Обратите внимание, что ISO-8859-1 не является кодировкой по умолчанию в современных браузерах. Начиная с HTML5, кодировкой по умолчанию является UTF-8 — именно её следует использовать для каждого нового документа. ISO-8859-1 актуальна сегодня главным образом при чтении или обслуживании старых страниц.

Что такое ISO-8859-1

ISO-8859-1 — однобайтовая кодировка: каждый символ хранится ровно в одном байте, поэтому она может представлять не более 256 кодовых позиций с номерами от 0 до 255. Эти 256 позиций делятся на два диапазона:

  • 0–127 — идентично ASCII. Здесь расположены основные латинские буквы A–Z и a–z, цифры 0–9, знаки препинания, пробел и управляющие символы.
  • 128–255дополнение Latin-1: буквы с диакритическими знаками (à, é, ñ, ü) и символы, такие как ©, £, ¥, ½ и ÷. Они охватывают большинство западноевропейских языков.

Поскольку кодировка однобайтовая, ISO-8859-1 не может представить символы за пределами этого набора — например, знак евро €, греческие, кириллические или любые символы CJK в ней закодировать невозможно. Именно это ограничение и привело к тому, что на смену ей пришла многобайтовая кодировка UTF-8. Чтобы получить общее представление о том, как соотносятся различные кодировки, смотрите HTML Character Sets.

Историческая справка

В 1990-х и начале 2000-х годов ISO-8859-1 была кодировкой по умолчанию для HTTP и HTML на западном вебе, поэтому огромное количество старых страниц создавалось именно с ней. Сегодня вы всё ещё встречаете её в устаревших HTML-файлах, базах данных, заголовках электронной почты и HTTP-ответах, не переведённых на UTF-8. Умение её распознавать помогает отлаживать классическую проблему «мусорных символов» (mojibake), когда символы с диакритикой отображаются в виде бессмыслицы из-за несоответствия реальной кодировки файла и объявленной.

Особенность Windows-1252

Вот наиболее распространённый источник путаницы. Согласно стандарту кодировок WHATWG, когда браузер видит документ, объявленный как charset=ISO-8859-1, он не декодирует его как настоящую ISO-8859-1. Вместо этого он декодирует его как Windows-1252.

Разница заключается в диапазоне 128–159. В подлинной ISO-8859-1 эти позиции занимают неиспользуемые управляющие символы C1. Windows-1252 переиспользует этот диапазон для печатаемых символов: знака евро (€), фигурных кавычек («», '''), длинного тире (—) и знака торговой марки (™). Поскольку реальные веб-страницы так часто рассчитывали на эти символы Windows, стандарт предписывает считать ISO-8859-1 (и её псевдонимы latin1, iso8859-1 и др.) синонимом Windows-1252 при декодировании HTML.

Практический вывод: объявления <meta charset="ISO-8859-1"> и <meta charset="windows-1252"> ведут себя в браузерах одинаково. Если вы не уверены, какую устаревшую кодировку использует страница, именно по этой причине символы в диапазоне 128–159, как правило, отображаются корректно.

Объявление кодировки символов

Используйте <meta charset="UTF-8"> для объявления кодировки вашего HTML-документа и поместите этот тег внутри секции <head>:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <!-- Your content here -->
</body>
</html>

Позиция имеет значение. Стандарт HTML требует, чтобы объявление <meta charset> располагалось в пределах первых 1024 байт документа. Браузер начинает считывать байты ещё до того, как узнаёт кодировку, поэтому объявление должно появляться достаточно рано, чтобы браузер успел его обнаружить и правильно интерпретировать остальную часть страницы. В приведённом примере <meta charset="UTF-8"> стоит самым первым элементом внутри <head>, надёжно укладываясь в этот лимит. Чтобы вместо этого объявить устаревшую кодировку, следует написать <meta charset="ISO-8859-1"> (которую браузер, как отмечалось выше, будет обрабатывать как Windows-1252).

Зарезервированные символы в HTML

Некоторые символы зарезервированы в HTML, поскольку они используются для построения самого языка HTML. Например, знаки «больше» и «меньше» нельзя использовать в тексте напрямую: браузер попытается интерпретировать их как HTML. Когда нужно вывести любой из зарезервированных символов, используйте имя или номер мнемоники.

Список зарезервированных символов приведён в таблице ниже:

СимволНомер мнемоникиИмя мнемоникиОписание
"&#34;&quot;кавычка
'&#39;&apos;апостроф
&&#38;&amp;амперсанд
<&#60;&lt;меньше
>&#62;&gt;больше

Полный справочник именованных символьных мнемоник смотрите на странице HTML Entities.

Символы ISO 8859-1

СимволНомер мнемоникиИмя мнемоникиОписание
 неразрывный пробел
¡¡¡перевёрнутый восклицательный знак
¢¢¢цент
£££фунт
¤¤¤валюта
¥¥¥иена
¦¦¦разорванная вертикальная черта
§§§параграф
¨¨¨диерезис
©©©авторское право
ªªªженский порядковый показатель
«««угловая кавычка (левая)
¬¬¬отрицание
­­­мягкий перенос
®®®знак зарегистрированной торговой марки
¯¯¯макрон
°°°градус
±±±плюс-минус
²²²верхний индекс 2
³³³верхний индекс 3
´´´акут
µµµмикро
знак абзаца
···средняя точка
¸¸¸седиль
¹¹¹верхний индекс 1
ºººмужской порядковый показатель
»»»угловая кавычка (правая)
¼¼¼дробь 1/4
½½½дробь 1/2
¾¾¾дробь 3/4
¿¿¿перевёрнутый вопросительный знак
×××умножение
÷÷÷деление

Буквенные символы ISO 8859-1

СимволНомер мнемоникиИмя мнемоникиОписание
ÀÀÀпрописная A, знак ударения
ÁÁÁпрописная A, акут
ÂÂÂпрописная A, циркумфлекс
ÃÃÃпрописная A, тильда
ÄÄÄпрописная A, умлаут
ÅÅÅпрописная A, кружок
ÆÆÆпрописная AE
ÇÇÇпрописная C, седиль
ÈÈÈпрописная E, знак ударения
ÉÉÉпрописная E, акут
ÊÊÊпрописная E, циркумфлекс
ËËËпрописная E, умлаут
ÌÌÌпрописная I, знак ударения
ÍÍÍпрописная I, акут
ÎÎÎпрописная I, циркумфлекс
ÏÏÏпрописная I, умлаут
ÐÐÐпрописная ETH, исландский
ÑÑÑпрописная N, тильда
ÒÒÒпрописная O, знак ударения
ÓÓÓпрописная O, акут
ÔÔÔпрописная O, циркумфлекс
ÕÕÕпрописная O, тильда
ÖÖÖпрописная O, умлаут
ØØØпрописная O, косая черта
ÙÙÙпрописная U, знак ударения
ÚÚÚпрописная U, акут
ÛÛÛпрописная U, циркумфлекс
ÜÜÜпрописная U, умлаут
ÝÝÝпрописная Y, акут
ÞÞÞпрописная THORN, исландский
ßßßстрочная острая S, немецкий
àààстрочная a, знак ударения
áááстрочная a, акут
âââстрочная a, циркумфлекс
ãããстрочная a, тильда
äääстрочная a, умлаут
åååстрочная a, кружок
æææстрочная ae
çççстрочная c, седиль
èèèстрочная e, знак ударения
éééстрочная e, акут
êêêстрочная e, циркумфлекс
ëëëстрочная e, умлаут
ìììстрочная i, знак ударения
íííстрочная i, акут
îîîстрочная i, циркумфлекс
ïïïстрочная i, умлаут
ðððстрочная eth, исландский
ñññстрочная n, тильда
òòòстрочная o, знак ударения
óóóстрочная o, акут
ôôôстрочная o, циркумфлекс
õõõстрочная o, тильда
öööстрочная o, умлаут
øøøстрочная o, косая черта
ùùùстрочная u, знак ударения
úúúстрочная u, акут
ûûûстрочная u, циркумфлекс
üüüстрочная u, умлаут
ýýýстрочная y, акут
þþþстрочная thorn, исландский
ÿÿÿстрочная y, умлаут

Варианты ISO-8859-1

ISO-8859-1 — лишь первая часть расширенного семейства ISO 8859. Каждая часть сохраняет нижний диапазон ASCII (0–127), но заменяет верхний диапазон (128–255) символами для другой группы языков или письменностей. Наиболее распространённые части перечислены ниже.

Набор символовОписаниеОхватывает
ISO-8859-1Latin 1Северная Америка, Западная Европа, Латинская Америка, Карибский бассейн, Канада, Африка.
ISO-8859-2Latin 2Восточная Европа.
ISO-8859-3Latin 3Юго-Восточная Европа, эсперанто, прочие.
ISO-8859-4Latin 4Скандинавия/Прибалтика (и другие, не входящие в ISO-8859-1).
ISO-8859-5Latin/CyrillicЯзыки с кириллическим алфавитом: болгарский, белорусский, русский и македонский.
ISO-8859-6Latin/ArabicЯзыки, использующие арабский алфавит.
ISO-8859-7Latin/GreekСовременный греческий язык, а также математические символы, произошедшие от греческого.
ISO-8859-8Latin/HebrewЯзыки, использующие еврейский алфавит.
ISO-8859-9Latin/TurkishТурецкий язык. Аналогична ISO-8859-1, но исландские символы заменены турецкими.
ISO-8859-10Latin/NordicСкандинавские языки.
ISO-8859-15Latin 9 (Latin 0)Похожа на ISO-8859-1, но заменяет некоторые редкие символы знаком евро и другими недостающими символами.

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

Смотрите также: HTML Character Sets, HTML ASCII и HTML Entities.

Практика

Практика
Что лучше всего описывает кодировку ISO-8859-1?
Что лучше всего описывает кодировку ISO-8859-1?
Was this page helpful?