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

IBM CP437

IBM CP437 (Code Page 437, OEM-US, MS-DOS Latin US) — это однобайтовая кодовая страница, разработанная корпорацией IBM в 1981 году для персональных компьютеров IBM PC. Является стандартной кодовой страницей для текстового режима операционной системы MS-DOS и ранних версий Microsoft Windows, работающих в текстовом режиме. CP437 представляет собой набор из 256 символов, включающий латинский алфавит, цифры, знаки препинания, математические символы, псевдографические символы для построения рамок и таблиц, а также ряд специальных символов, включая символы валют, стрелки и символы для рисования.

История

Происхождение

Кодовая страница 437 была создана в рамках проекта IBM по разработке операционной системы IBM PC DOS, которая должна была обеспечить совместимость с существующими стандартами и одновременно предоставить расширенные возможности для отображения текста и графики. В отличие от более ранних кодировок, таких как ASCII (American Standard Code for Information Interchange), CP437 включала в себя не только управляющие и печатные символы, но и значительное количество псевдографических символов, что позволяло создавать простые интерфейсы с рамками, меню и таблицами в текстовом режиме.

Распространение

С выпуском IBM PC в 1981 году CP437 стала де-факто стандартом для всех совместимых с IBM PC компьютеров, работающих под управлением MS-DOS. Она использовалась в текстовых редакторах (например, Norton Commander, FAR Manager), играх (например, Doom, Wolfenstein 3D), а также в системных утилитах и интерфейсах командной строки. Вплоть до середины 1990-х годов CP437 оставалась основной кодовой страницей для DOS-приложений, несмотря на появление альтернативных кодировок, таких как CP866 (для кириллицы) и CP850 (для западноевропейских языков).

Упадок и наследие

С переходом на графические операционные системы, такие как Microsoft Windows и Linux, использование CP437 в качестве стандартной кодовой страницы сократилось. В Windows она была заменена на кодовые страницы Windows-1251 (для кириллицы) и Windows-1252 (для западноевропейских языков), а также на Unicode. Тем не менее, CP437 продолжает использоваться в некоторых эмуляторах терминала, консольных приложениях, а также в качестве кодировки по умолчанию для файловых систем FAT и FAT32, где она используется для хранения имён файлов в формате 8.3.

Структура и кодировка

Диапазоны символов

CP437 состоит из 256 символов, которые делятся на несколько диапазонов:

  • 0–31 (0x00–0x1F): Управляющие символы (C0). Включают такие символы, как NULL (0x00), Backspace (0x08), Tab (0x09), Line Feed (0x0A), Carriage Return (0x0D) и Escape (0x1B). Эти символы не отображаются на экране, а управляют поведением терминала или принтера.
  • 32–127 (0x20–0x7F): Печатные символы ASCII. Включают латинский алфавит (A–Z, a–z), цифры (0–9), знаки препинания (.,;:!? и т.д.) и математические символы (+, -, *, /, =). Этот диапазон полностью соответствует стандарту ASCII, за исключением символа 0x7F (DEL), который в CP437 также является управляющим.
  • 128–255 (0x80–0xFF): Расширенные символы. Этот диапазон включает в себя:
  • Псевдографические символы (0xB0–0xDF): Символы для построения рамок, таблиц и линий (например, одинарные и двойные линии, углы, перекрестия).
  • Математические символы (0xE0–0xEF): Символы, такие как α (альфа), β (бета), γ (гамма), π (пи), Σ (сигма), √ (корень), ∞ (бесконечность) и другие.
  • Символы валют (0x9C, 0x9D, 0x9E): Символы, такие как £ (фунт стерлингов), ¥ (иена), € (евро — в более поздних версиях).
  • Стрелки (0x18, 0x19, 0x1A, 0x1B): Стрелки вверх, вниз, влево и вправо.
  • Специальные символы (0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F): Символы, такие как ♀ (женский знак), ♂ (мужской знак), ♪ (нота), ♫ (две ноты) и другие.
  • Символы для рисования (0x10–0x1F): Символы, такие как █ (блок), ▓ (заштрихованный блок), ▒ (средний блок), ░ (светлый блок), а также символы для создания простых графических элементов.

Таблица символов (частичная)

Код (hex)Код (dec)СимволОписание
0x2032(пробел)Пробел
0x4165AЛатинская заглавная A
0x6197aЛатинская строчная a
0x30480Цифра ноль
0xB0176Светлый блок (25% заливки)
0xB1177Средний блок (50% заливки)
0xB2178Тёмный блок (75% заливки)
0xB3179Вертикальная линия (одинарная)
0xC4196Горизонтальная линия (одинарная)
0xC9201Верхний левый угол (двойная линия)
0xBA186Вертикальная линия (двойная)
0xE0224αГреческая альфа
0xE1225βГреческая бета
0xE2226ΓГреческая гамма (заглавная)
0xE3227πГреческая пи
0xE4228ΣГреческая сигма (заглавная)
0xE5229σГреческая сигма (строчная)
0xE6230µМикро (греческая мю)
0xE7231τГреческая тау
0xE8232ΦГреческая фи (заглавная)
0xE9233ΘГреческая тета (заглавная)
0xEA234ΩГреческая омега (заглавная)
0xEB235δГреческая дельта (строчная)
0xEC236Бесконечность
0xED237Пустое множество
0xEE238Принадлежит
0xEF239Пересечение
0xF0240Тождественно
0xF1241±Плюс-минус
0xF2242Больше или равно
0xF3243Меньше или равно
0xF4244Верхний интеграл
0xF5245Нижний интеграл
0xF6246÷Деление
0xF7247Приблизительно
0xF8248°Градус
0xF9249Точка (оператор)
0xFA250·Средняя точка
0xFB251Квадратный корень
0xFC252Степень n
0xFD253²Квадрат
0xFE254Чёрный квадрат
0xFF255(неразрывный пробел)Неразрывный пробел

Применение

Текстовые интерфейсы

Основное применение CP437 — создание текстовых пользовательских интерфейсов (TUI) в операционной системе MS-DOS. Псевдографические символы позволяли разработчикам создавать рамки, меню, диалоговые окна и таблицы, не прибегая к графическим режимам. Это было особенно важно в условиях ограниченных ресурсов ранних ПК, где графический режим требовал значительных вычислительных мощностей и памяти.

Игры

CP437 широко использовалась в компьютерных играх 1980-х и начала 1990-х годов. Псевдографические символы применялись для отображения лабиринтов, карт, интерфейсов и даже простых анимаций. Например, в игре «Rogue» (1980) и её последователях (например, «NetHack») использовались символы CP437 для отображения персонажей, монстров и предметов. В игре «Doom» (1993) интерфейс (здоровье, боеприпасы, карта) также был построен на основе CP437.

Системные утилиты

Многие системные утилиты MS-DOS, такие как dir, type, edit, debug, fdisk, использовали CP437 для вывода информации. Например, команда dir отображала имена файлов и каталогов, используя символы CP437 для разделителей, а команда type выводила содержимое текстовых файлов, интерпретируя их как CP437.

Файловые системы

CP437 используется в файловых системах FAT12, FAT16 и FAT32 для хранения имён файлов в формате 8.3 (до 8 символов имени, точка, до 3 символов расширения). Это означает, что имена файлов, созданные в MS-DOS, могут содержать только символы из CP437. При переходе на более современные файловые системы (NTFS, ext4) имена файлов хранятся в Unicode, но при работе с FAT-устройствами (например, флеш-накопителями) может использоваться CP437.

Критика и ограничения

Отсутствие поддержки кириллицы

CP437 не включает в себя символы кириллицы, что делает её непригодной для использования в русскоязычных текстах. Для работы с кириллицей в MS-DOS была разработана отдельная кодовая страница — CP866 (OEM Cyrillic), которая заменила часть расширенных символов CP437 на буквы русского алфавита.

Ограниченный набор символов

CP437 содержит только 256 символов, что недостаточно для отображения всех символов, используемых в различных языках мира. Например, в ней отсутствуют символы с диакритическими знаками (например, é, ü, ñ), а также символы для многих азиатских языков. Это ограничение привело к созданию множества локальных кодовых страниц, таких как CP850 (для западноевропейских языков), CP852 (для восточноевропейских языков) и CP866 (для кириллицы).

Несовместимость с Unicode

CP437 несовместима с Unicode, что создаёт проблемы при обмене данными между системами, использующими разные кодировки. Например, текст, сохранённый в CP437, может быть неправильно отображён в системе, использующей Unicode, если не выполнена корректная конвертация.

Интересные факты

  • Символы CP437, такие как █ (блок) и ▓ (заштрихованный блок), использовались в ранних BBS (Bulletin Board System) для создания простых графических изображений и анимаций.
  • Некоторые символы CP437, например, ♪ (нота) и ♫ (две ноты), использовались в играх для воспроизведения звуковых эффектов через встроенный динамик ПК.
  • CP437 является одной из немногих кодовых страниц, которая включает в себя символы для отображения математических операторов, таких как √ (корень), ∞ (бесконечность) и ∫ (интеграл).
  • В эмуляторах терминала, таких как xterm, PuTTY и Windows Terminal, можно настроить использование CP437 для отображения текста, что позволяет запускать старые DOS-приложения в современных операционных системах.

Источники

  • IBM. «IBM PC DOS Technical Reference». IBM Corporation, 1981.
  • Microsoft. «MS-DOS User's Guide and Reference». Microsoft Corporation, 1985.
  • The Unicode Consortium. «The Unicode Standard, Version 15.0». Mountain View, CA: The Unicode Consortium, 2022.
  • RFC 1345. «Character Mnemonics & Character Sets». Internet Engineering Task Force, 1992.
  • «Code Page 437». Wikipedia, The Free Encyclopedia.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →