ISO 8859-1
ISO 8859-1 (также известная как Latin-1) — это стандартная 8-битная кодировка символов, разработанная Международной организацией по стандартизации (ISO) как часть семейства стандартов ISO 8859. Она предназначена для представления текстов на языках Западной Европы, включая английский, французский, немецкий, испанский, итальянский, португальский и другие, а также на некоторых других языках, использующих латинский алфавит. Кодировка включает 191 символ из латинского алфавита, дополненный диакритическими знаками (умляуты, акуты, грависы, седили и другие), а также знаки препинания, математические символы и буквы, отсутствующие в базовом ASCII. ISO 8859-1 является одной из наиболее распространённых однобайтовых кодировок в истории компьютерных систем, особенно в вебе, хотя в настоящее время она активно вытесняется стандартом Unicode (UTF-8).
История
Разработка стандарта ISO 8859-1 началась в середине 1980-х годов в рамках усилий по унификации кодировок для различных языков, использующих латиницу. До этого существовало множество проприетарных кодировок, таких как CP437 (IBM PC) и Windows-1252 (Microsoft), которые были несовместимы между собой. В 1986 году Международная организация по стандартизации (ISO) совместно с Международной электротехнической комиссией (IEC) опубликовала первую версию стандарта ISO 8859-1 как часть многочастного стандарта ISO 8859, охватывающего разные алфавиты (часть 1 — западноевропейские языки, часть 2 — восточноевропейские и т. д.).
Стандарт был широко принят в операционных системах Unix и Linux, а также в протоколах передачи данных, таких как HTTP (где он стал кодировкой по умолчанию до внедрения UTF-8). В 1990-х годах ISO 8859-1 стала основной кодировкой для веб-страниц, особенно в Европе, благодаря поддержке в браузерах и серверах. Однако с ростом глобализации интернета и необходимостью поддержки языков за пределами Западной Европы (например, кириллицы, арабского, китайского) возникла потребность в более универсальном решении. В 2000-х годах Unicode, в частности UTF-8, начал вытеснять ISO 8859-1, и к 2020-м годам доля веб-сайтов, использующих Latin-1, снизилась до нескольких процентов.
Структура и кодировка
ISO 8859-1 является однобайтовой кодировкой, то есть каждый символ кодируется одним байтом (8 бит), что позволяет представить до 256 символов. Из них первые 128 символов (коды 0–127) полностью соответствуют стандарту ASCII (American Standard Code for Information Interchange), включая латинские буквы без диакритики, цифры, знаки препинания и управляющие символы. Следующие 128 символов (коды 128–255) содержат дополнительные символы, специфичные для западноевропейских языков.
Диапазоны символов
- 0–31: Управляющие символы (C0), непечатаемые, используются для управления терминалом или передачей данных.
- 32–127: Печатаемые символы ASCII, включая пробел (32), латинские буквы A–Z (65–90) и a–z (97–122), цифры 0–9 (48–57), знаки препинания и другие.
- 128–159: Управляющие символы (C1), непечатаемые, но в некоторых реализациях (например, в Windows-1252) этот диапазон занят печатаемыми символами, что приводит к несовместимости.
- 160–255: Печатаемые символы, включая:
- 160: неразрывный пробел (NBSP).
- 161–191: знаки препинания, математические символы (например, ©, ®, °, ±, ¹, ², ³, µ, ¶, ·, ¿).
- 192–255: латинские буквы с диакритическими знаками (например, À, Á, Â, Ã, Ä, Å, Æ, Ç, È, É, Ê, Ë, Ì, Í, Î, Ï, Ð, Ñ, Ò, Ó, Ô, Õ, Ö, ×, Ø, Ù, Ú, Û, Ü, Ý, Þ, ß, à, á, â, ã, ä, å, æ, ç, è, é, ê, ë, ì, í, î, ï, ð, ñ, ò, ó, ô, õ, ö, ÷, ø, ù, ú, û, ü, ý, þ, ÿ).
Отличия от Windows-1252
Наиболее известная проприетарная кодировка Windows-1252 (также называемая ANSI) отличается от ISO 8859-1 в диапазоне кодов 128–159. В ISO 8859-1 эти коды зарезервированы для управляющих символов C1, тогда как в Windows-1252 они заняты печатаемыми символами, такими как кавычки, тире, знак евро (€) и другие. Это привело к путанице: многие программы и веб-браузеры исторически интерпретировали ISO 8859-1 как Windows-1252, что делало их практически взаимозаменяемыми для практических целей.
Применение
ISO 8859-1 широко использовалась в следующих областях:
- Веб-технологии: До появления UTF-8 она была кодировкой по умолчанию для HTTP-заголовков (Content-Type: text/html; charset=ISO-8859-1) и HTML-документов. Многие ранние веб-страницы, особенно на западноевропейских языках, кодировались именно в Latin-1.
- Электронная почта: Протоколы MIME (Multipurpose Internet Mail Extensions) поддерживали ISO 8859-1 для передачи текстовых сообщений с диакритикой.
- Текстовые файлы и базы данных: В Unix-подобных системах Latin-1 использовалась для хранения локализованных текстов, например, в файлах конфигурации или документации.
- Программное обеспечение: Многие старые программы, включая текстовые редакторы (например, vi, emacs) и базы данных (например, MySQL до версии 4.1), поддерживали ISO 8859-1 как стандартную кодировку.
Ограничения
Основные недостатки ISO 8859-1:
- Ограниченный набор символов: Кодировка поддерживает только 191 печатаемый символ, что недостаточно для языков с нелатинскими алфавитами (кириллица, греческий, арабский, иврит) или для многих символов из восточноевропейских языков (например, польские, чешские, венгерские буквы с диакритикой, которые не входят в Latin-1).
- Несовместимость с глобальным текстом: Для представления текстов на нескольких языках одновременно (например, русском и французском) требуется переключение кодировок или использование Unicode.
- Путаница с Windows-1252: Различия в диапазоне 128–159 приводили к ошибкам при отображении символов, особенно в вебе, где браузеры часто автоматически интерпретировали ISO 8859-1 как Windows-1252.
Связь с Unicode
ISO 8859-1 полностью включена в стандарт Unicode как первые 256 кодовых точек (U+0000–U+00FF). Это означает, что любой символ из Latin-1 имеет тот же номер в Unicode, что и в ISO 8859-1. Однако Unicode расширяет эту кодировку до 1 114 112 кодовых точек, что позволяет представлять символы всех письменностей мира. В частности, UTF-8, наиболее распространённая реализация Unicode, обратно совместима с ASCII, но не с ISO 8859-1 в целом (символы с кодами 128–255 кодируются в UTF-8 двумя байтами).
Современное состояние
Начиная с 2010-х годов использование ISO 8859-1 в вебе резко сократилось. По данным статистики W3Techs (на 2024 год), менее 1% всех веб-сайтов используют Latin-1, в то время как более 98% перешли на UTF-8. Тем не менее, кодировка продолжает применяться в устаревших системах, старых документах и некоторых протоколах, где требуется минимальная совместимость с ASCII. В России ISO 8859-1 практически не использовалась из-за распространённости кириллических кодировок (KOI8-R, Windows-1251), но могла встречаться в международных проектах или при обмене данными с западными партнёрами.
Интересные факты
- ISO 8859-1 часто путают с ISO 8859-15 (Latin-9), который включает символ евро (€) и некоторые другие изменения, но не получил широкого распространения.
- В языке HTML и XML кодировка ISO 8859-1 может быть указана через метатег
<meta (организация признана экстремистской, деятельность запрещена в РФ) charset="ISO-8859-1">, но современные стандарты рекомендуют использовать UTF-8. - В операционной системе Windows кодировка Windows-1252, хотя и не является стандартом ISO, часто ошибочно обозначается как «ANSI» или «Latin-1» в интерфейсе пользователя.
Источники
- ISO/IEC 8859-1:1998 — Information technology — 8-bit single-byte coded graphic character sets — Part 1: Latin alphabet No. 1.
- Unicode Standard, Version 15.0 — The Unicode Consortium, 2022.
- W3Techs — Usage statistics of character encodings for websites, 2024.
- RFC 1345 — Character Mnemonics and Character Sets, 1992.
- Документация по кодировкам в HTML и HTTP — W3C, 2023.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →