Windows-1252
Windows-1252 — это однобайтовая кодировка (кодовая страница) для латинского алфавита, разработанная корпорацией Microsoft и являющаяся расширением кодировки ISO 8859-1 (Latin-1). Она была создана для использования в операционных системах семейства Microsoft Windows и до сих пор применяется в некоторых устаревших приложениях и документах, особенно в западноевропейских языках.
История
Кодировка Windows-1252 была представлена в 1980-х — начале 1990-х годов как часть усилий Microsoft по стандартизации набора символов для своей новой операционной системы Windows. В то время существовало множество несовместимых кодировок для разных языков, и Microsoft стремилась создать единую систему, которая бы покрывала потребности большинства западноевропейских стран.
Основой для Windows-1252 послужила международная кодировка ISO 8859-1, утверждённая в 1987 году. Однако Microsoft решила не полностью следовать стандарту: в диапазоне кодов от 0x80 до 0x9F (128–159 в десятичной системе), который в ISO 8859-1 был зарезервирован для управляющих символов, компания разместила дополнительные печатные символы, такие как типографские кавычки, длинное тире, знак евро (€) и некоторые другие знаки пунктуации. Это и стало ключевым отличием Windows-1252 от её предшественницы.
В 1990-х и начале 2000-х годов Windows-1252 была стандартной кодировкой для английской и западноевропейской локализации Windows. Она использовалась в таких приложениях, как Microsoft Word, Internet Explorer и Notepad. С распространением Unicode (особенно UTF-8) в середине 2000-х годов Windows-1252 начала вытесняться, но до сих пор встречается в старых текстовых файлах, веб-страницах и базах данных, созданных до массового перехода на Unicode.
Отличия от ISO 8859-1
Основное различие между Windows-1252 и ISO 8859-1 заключается в использовании диапазона кодов 0x80–0x9F.
- ISO 8859-1: Коды 0x80–0x9F (128–159) являются управляющими символами (C1 control codes) и не имеют графического представления.
- Windows-1252: В этом же диапазоне размещены 27 печатных символов, включая:
- 0x80 — знак евро (€)
- 0x82 — одинарная нижняя кавычка (‚)
- 0x83 — буква f с крюком (ƒ)
- 0x84 — двойная нижняя кавычка („)
- 0x85 — многоточие (…)
- 0x86 — крестик (†)
- 0x87 — двойной крестик (‡)
- 0x88 — циркумфлекс (ˆ)
- 0x89 — промилле (‰)
- 0x8A — латинская буква S с гачеком (Š)
- 0x8B — левая угловая кавычка (‹)
- 0x8C — латинская буква OE (Œ)
- 0x8E — латинская буква Z с гачеком (Ž)
- 0x91 — левая одинарная кавычка (‘)
- 0x92 — правая одинарная кавычка (’)
- 0x93 — левая двойная кавычка (“)
- 0x94 — правая двойная кавычка (”)
- 0x95 — маркер списка (•)
- 0x96 — короткое тире (–)
- 0x97 — длинное тире (—)
- 0x98 — тильда (˜)
- 0x99 — знак торговой марки (™)
- 0x9A — латинская буква s с гачеком (š)
- 0x9B — правая угловая кавычка (›)
- 0x9C — латинская лигатура oe (œ)
- 0x9E — латинская буква z с гачеком (ž)
- 0x9F — латинская буква Y с умлаутом (Ÿ)
Из-за этого несоответствия многие веб-страницы и документы, объявленные как ISO 8859-1, на самом деле содержали символы из Windows-1252. Впоследствии стандарт HTML5 официально предписал браузерам интерпретировать объявленную кодировку ISO 8859-1 как Windows-1252 для корректного отображения таких страниц.
Структура и набор символов
Windows-1252 является однобайтовой кодировкой, то есть каждый символ кодируется одним байтом (8 бит), что позволяет представить 256 символов (0x00–0xFF). Кодировка включает:
- Управляющие символы (0x00–0x1F и 0x7F): 33 кода зарезервированы для управляющих символов (C0 control codes), таких как табуляция, перевод строки и возврат каретки.
- Печатные символы (0x20–0x7E): 95 символов, включая латинские буквы (A–Z, a–z), цифры (0–9) и основные знаки пунктуации. Этот диапазон полностью соответствует ASCII.
- Символы из ISO 8859-1 (0xA0–0xFF): 96 символов, включая буквы с диакритическими знаками (например, é, ü, ñ), математические символы (например, ×, ÷) и знаки валют (например, £, ¥). Этот диапазон идентичен ISO 8859-1.
- Дополнительные символы (0x80–0x9F): 27 печатных символов, описанных выше.
Таким образом, Windows-1252 содержит 223 печатных символа (включая пробел) и 33 управляющих символа.
Применение
Операционные системы
Windows-1252 была кодировкой по умолчанию для английской и западноевропейской локализаций операционных систем Microsoft Windows вплоть до Windows XP. В более поздних версиях (Windows Vista, 7, 8, 10, 11) она сохраняется как одна из доступных кодовых страниц, но по умолчанию используется Unicode (UTF-16).
Веб-страницы
В 1990-х и начале 2000-х годов Windows-1252 широко использовалась для создания веб-страниц на западноевропейских языках. Многие сайты, особенно созданные до 2005 года, до сих пор содержат тексты в этой кодировке. Современные веб-стандарты рекомендуют использовать UTF-8, но Windows-1252 остаётся распространённой для старых ресурсов.
Текстовые редакторы и офисные пакеты
Microsoft Word и другие программы пакета Microsoft Office исторически использовали Windows-1252 для сохранения документов в формате .doc и .txt. Даже сегодня при сохранении текстового файла в «обычном» формате (без Unicode) в Word может быть предложена кодировка Windows-1252.
Базы данных
Некоторые старые базы данных (например, на основе Microsoft SQL Server или MySQL) могут использовать Windows-1252 для хранения текстовой информации. При миграции на Unicode требуется корректное преобразование данных, чтобы избежать потери символов.
Поддержка в современных системах
Несмотря на доминирование Unicode, Windows-1252 поддерживается практически всеми современными операционными системами и приложениями. В Windows она доступна как кодовая страница 1252 (CP 1252). В Linux и macOS она поддерживается через библиотеки iconv и ICU. Веб-браузеры также корректно отображают страницы в Windows-1252, хотя по умолчанию используют UTF-8.
Однако при работе с текстами в Windows-1252 могут возникать проблемы, если они обрабатываются как UTF-8 или другая кодировка. Например, символы из диапазона 0x80–0x9F в UTF-8 интерпретируются как часть многобайтовых последовательностей, что приводит к искажению текста.
Сравнение с другими кодировками
- ISO 8859-1 (Latin-1): Отличается отсутствием символов в диапазоне 0x80–0x9F. Windows-1252 является надмножеством ISO 8859-1.
- ISO 8859-15 (Latin-9): Включает знак евро (€) и некоторые другие символы, но размещает их в других позициях (например, 0xA4). Windows-1252 также содержит знак евро, но в позиции 0x80.
- UTF-8: Многобайтовая кодировка, способная представить все символы Unicode. Windows-1252 несовместима с UTF-8, но любой символ из Windows-1252 может быть представлен в UTF-8.
- CP 437 (OEM): Кодировка для DOS, содержит символы псевдографики и несовместима с Windows-1252.
Интересные факты
- Из-за популярности Windows-1252 в вебе стандарт HTML5 (2014 год) официально предписывает браузерам интерпретировать объявленную кодировку ISO 8859-1 как Windows-1252. Это сделано для обратной совместимости, так как многие сайты ошибочно указывали ISO 8859-1, но использовали символы из Windows-1252.
- Кодировка Windows-1252 иногда ошибочно называется «ANSI» или «Windows ANSI». Это историческое название, возникшее из-за того, что Microsoft называла свои кодовые страницы «ANSI-кодовыми страницами» (по аналогии со стандартом ANSI). На самом деле ANSI не стандартизировал Windows-1252.
- В России и других странах, использующих кириллицу, Windows-1252 не применяется для текстов на русском языке. Для кириллицы используется кодировка Windows-1251.
Источники
- Microsoft Corporation. «Code Page 1252 Windows Latin-1 (ANSI)». Microsoft Docs.
- The Unicode Consortium. «The Unicode Standard, Version 15.0».
- International Organization for Standardization. «ISO/IEC 8859-1:1998 Information technology — 8-bit single-byte coded graphic character sets — Part 1: Latin alphabet No. 1».
- World Wide Web Consortium (W3C). «HTML5: A vocabulary and associated APIs for HTML and XHTML». Section 8.2.2.2.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →