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

CP437

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

История

Разработка и стандартизация

Создание CP437 было обусловлено необходимостью отображения текста и символов на монохромных и цветных дисплеях IBM PC, которые работали в текстовом режиме с разрешением 80×25 символов. В отличие от более ранних систем, использовавших 7-битный ASCII (128 символов), IBM решила использовать 8-битную кодировку (256 символов), чтобы включить в неё дополнительные знаки: буквы национальных алфавитов, математические символы и элементы псевдографики.

Разработкой занималась группа инженеров IBM под руководством Дэвида Брэдли. В 1981 году CP437 была представлена вместе с IBM PC (модель 5150). Она стала основной кодовой страницей для MS-DOS, разработанной Microsoft, и оставалась таковой до середины 1990-х годов.

Распространение и влияние

CP437 получила широкое распространение благодаря доминированию IBM PC и совместимых с ними компьютеров, а также операционных систем MS-DOS и PC DOS. Она использовалась во всех программах, работающих в текстовом режиме: текстовых редакторах (например, Norton Editor, WordStar), электронных таблицах (Lotus 1-2-3), играх (Doom, Wolfenstein 3D), файловых менеджерах (Norton Commander, Volkov Commander) и системных утилитах.

С появлением Windows 95 и переходом на графические интерфейсы, а также с распространением Unicode, CP437 постепенно утратила своё значение. Однако она остаётся важной для совместимости с устаревшим программным обеспечением, эмуляторами DOS и некоторыми встроенными системами.

Структура и классификация

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

CP437 представляет собой 8-битную кодовую страницу, где каждый символ кодируется одним байтом (0–255). Символы делятся на три основные группы:

  • 0–31 (управляющие символы): Зарезервированы для управления терминалом и устройствами ввода-вывода. Включают такие коды, как 0 (NUL), 7 (BEL), 10 (LF), 13 (CR). В текстовом режиме IBM PC эти коды не отображались как символы, а использовались для управления курсором, звуком и другими функциями.
  • 32–126 (печатные символы ASCII): Соответствуют стандартному 7-битному ASCII. Включают латинские буквы (A–Z, a–z), цифры (0–9), знаки препинания и специальные символы (пробел, точка, запятая, скобки и т.д.).
  • 127–255 (расширенная часть): Содержит дополнительные символы, отсутствующие в ASCII. К ним относятся:
  • Псевдографика (символы № 176–223): Набор из 48 символов, предназначенных для рисования рамок, линий, углов, теней и других элементов в текстовом режиме. Они позволяли создавать простые графические интерфейсы, таблицы и диаграммы без использования графического режима.
  • Математические символы (№ 224–238): Включают знаки операций (+, −, ×, ÷), греческие буквы (α, β, γ, π, Σ, Ω) и другие символы.
  • Буквы с диакритическими знаками (№ 128–175, 224–238): Содержат буквы для некоторых европейских языков: немецкого (ä, ö, ü, ß), французского (é, è, ê, ô), испанского (ñ, ¿, ¡) и других.
  • Символы валют (№ 156, 157, 158): Фунт стерлингов (£), иена (¥) и цент (¢).
  • Прочие символы: Знак градуса (°), символ параграфа (§), стрелки (←, ↑, →, ↓), музыкальные ноты (♪, ♫), символы для обозначения пола (♂, ♀) и другие.

Особенности кодировки

  • Псевдографика: Это ключевая особенность CP437. Символы псевдографики (линии, углы, перекрестья, тени) позволяли создавать в текстовом режиме элементы, имитирующие графику. Они были незаменимы для построения интерфейсов в программах, работающих в текстовом режиме, таких как Norton Commander.
  • Отсутствие кириллицы: CP437 не включает буквы кириллицы. Для русского языка использовались другие кодовые страницы, такие как CP866 (альтернативная кодировка) и CP1251 (Windows-1251). Однако в CP437 есть символы, которые могли использоваться для имитации кириллицы (например, символы с диакритическими знаками).
  • Нестандартные символы: Некоторые символы в CP437, такие как «♠», «♣», «♥», «♦» (карточные масти), «♪», «♫» (музыкальные ноты), являются уникальными для этой кодировки и не встречаются в других стандартных наборах символов.

Применение

Операционные системы и программы

CP437 была основной кодовой страницей для:

  • MS-DOS и PC DOS: Все версии этих операционных систем использовали CP437 для отображения текста в консоли.
  • Текстовые редакторы: Большинство текстовых редакторов для DOS (например, Norton Editor, WordStar, Multi-Edit) использовали CP437.
  • Файловые менеджеры: Norton Commander, Volkov Commander, FAR Manager (в режиме совместимости) — все они использовали псевдографику CP437 для построения интерфейса.
  • Игры: Многие игры для DOS, особенно ранние, использовали текстовый режим и псевдографику CP437 для отображения графики (например, Rogue, Nethack, Doom в текстовом режиме).
  • Системные утилиты: CHKDSK, FORMAT, DEBUG и другие утилиты DOS выводили информацию с использованием CP437.

Современное использование

Несмотря на устаревание, CP437 продолжает использоваться в следующих контекстах:

  • Эмуляторы DOS: Программы, эмулирующие среду DOS (например, DOSBox), по умолчанию используют CP437 для отображения текста.
  • Встроенные системы: Некоторые встроенные системы с ограниченными ресурсами продолжают использовать CP437 для отображения текста и псевдографики.
  • Ретро-вычисления: Энтузиасты, работающие с устаревшим оборудованием и программным обеспечением, используют CP437 для совместимости.
  • Текстовые интерфейсы: Некоторые современные программы (например, текстовые редакторы в консоли Linux, такие как Vim, Emacs) могут использовать CP437 для отображения символов, если это настроено.
  • Unicode: CP437 является одной из кодовых страниц, поддерживаемых стандартом Unicode. Символы CP437 имеют соответствующие коды в Unicode (U+0000–U+00FF).

Примеры символов CP437

Код (дес.)Код (шест.)СимволОписание
10x01Смайлик (белый)
20x02Смайлик (чёрный)
30x03Червовый туз
40x04Бубновый туз
50x05Трефовый туз
60x06Пиковый туз
70x07Точка
80x08Точка в круге
90x09Круг
100x0AКруг с точкой
110x0BМужской символ
120x0CЖенский символ
130x0DМузыкальная нота
140x0EДве музыкальные ноты
150x0FСолнце
160x10Стрелка вправо
170x11Стрелка влево
180x12Стрелка вверх-вниз
190x13Двойной восклицательный знак
200x14Символ параграфа
210x15§Символ раздела
220x16Чёрный прямоугольник
230x17Стрелка вверх-вниз с основанием
240x18Стрелка вверх
250x19Стрелка вниз
260x1AСтрелка вправо
270x1BСтрелка влево
280x1CПрямой угол
290x1DСтрелка влево-вправо
300x1EТреугольник вверх
310x1FТреугольник вниз
1270x7FДом
1760xB0Лёгкая тень
1770xB1Средняя тень
1780xB2Тёмная тень
1790xB3Вертикальная линия
1800xB4Вертикальная линия с соединением вправо
1810xB5Двойная вертикальная линия с соединением вправо
1820xB6Двойная вертикальная линия с соединением влево
1830xB7Двойная вертикальная линия с соединением вниз
1840xB8Двойная вертикальная линия с соединением вверх
1850xB9Двойная вертикальная линия с двойным соединением
1860xBAДвойная вертикальная линия
1870xBBДвойной правый верхний угол
1880xBCДвойной правый нижний угол
1890xBDДвойной левый нижний угол
1900xBEДвойной левый верхний угол
1910xBFПравый верхний угол
1920xC0Левый нижний угол
1930xC1Пересечение линий сверху
1940xC2Пересечение линий снизу
1950xC3Пересечение линий слева
1960xC4Горизонтальная линия
1970xC5Пересечение линий
1980xC6Двойная горизонтальная линия с соединением влево
1990xC7Двойная горизонтальная линия с соединением вправо
2000xC8Двойной левый нижний угол
2010xC9Двойной левый верхний угол
2020xCAДвойное пересечение линий сверху
2030xCBДвойное пересечение линий снизу
2040xCCДвойное пересечение линий слева
2050xCDДвойная горизонтальная линия
2060xCEДвойное пересечение линий
2070xCFДвойное пересечение линий сверху (одинарная внизу)
2080xD0Двойное пересечение линий снизу (одинарная вверху)
2090xD1Двойное пересечение линий сверху (одинарная слева)
2100xD2Двойное пересечение линий снизу (одинарная справа)
2110xD3Двойной левый нижний угол (одинарная вверху)
2120xD4Двойной правый нижний угол (одинарная вверху)
2130xD5Двойной левый верхний угол (одинарная внизу)
2140xD6Двойной правый верхний угол (одинарная внизу)
2150xD7Двойное пересечение линий (одинарная по диагонали)
2160xD8Двойное пересечение линий (одинарная по диагонали)
2170xD9Правый нижний угол
2180xDAЛевый верхний угол
2190xDBПолный блок
2200xDCНижняя половина блока
2210xDDЛевая половина блока
2220xDEПравая половина блока
2230xDFВерхняя половина блока
2240xE0αАльфа (греческая)
2250xE1ßЭсцет (немецкая)
2260xE2ΓГамма (греческая)
2270xE3πПи (греческая)
2280xE4ΣСигма (греческая)
2290xE5σСигма (строчная греческая)
2300xE6µМикро
2310xE7τТау (греческая)
2320xE8ΦФи (греческая)
2330xE9ΘТета (греческая)
2340xEAΩОмега (греческая)
2350xEBδДельта (греческая)
2360xECБесконечность
2370xEDφФи (строчная греческая)
2380xEEεЭпсилон (греческая)
2390xEFПересечение множеств
2400xF0Тождественно равно
2410xF1±Плюс-минус
2420xF2Больше или равно
2430xF3Меньше или равно
2440xF4Интеграл (верхняя часть)
2450xF5Интеграл (нижняя часть)
2460xF6÷Деление
2470xF7Приблизительно равно
2480xF8°Градус
2490xF9Точка (средняя)
2500xFA·Точка (средняя)
2510xFBКвадратный корень
2520xFCСтепень n
2530xFD²Квадрат
2540xFEКвадрат
2550xFFНеразрывный пробел

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

  • Отсутствие кириллицы: CP437 не поддерживает кириллицу, что делало её непригодной для использования в русскоязычных системах без дополнительных модификаций. Для русского языка были разработаны отдельные кодовые страницы (CP866, CP1251).
  • Ограниченный набор символов: 256 символов недостаточно для поддержки всех языков мира. Это привело к созданию множества различных кодовых страниц для разных регионов.
  • Нестандартные символы: Некоторые символы CP437 (например, смайлики, карточные масти) не имеют стандартных аналогов в Unicode, что может вызывать проблемы при конвертации текста.
  • Устаревание: С переходом на Unicode и графические интерфейсы CP437 потеряла актуальность. Современные системы редко используют её для отображения текста.

Источники

  1. IBM Personal Computer Technical Reference Manual (1981).
  2. Microsoft MS-DOS Programmer's Reference (1988).
  3. Стандарт Unicode, версия 15.0.
  4. Документация по эмулятору DOSBox.
  5. Статья «Code page 437» в английской Википедии.

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

На главную BFOmetr →