Открыть сервис

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 →