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

Кодовая страница

Кодовая страница (англ. code page, charset) — это таблица соответствия, устанавливающая связь между числовыми кодами (обычно байтами) и графическими символами (буквами, цифрами, знаками препинания, псевдографикой) в компьютерных системах. Кодовая страница определяет, какой символ будет отображаться или обрабатываться при получении определённого числового значения. Является одним из способов реализации кодировки символов, исторически предшествовавшим более универсальным стандартам, таким как Unicode.

История

Ранние компьютерные системы и ASCII

Первые компьютерные системы использовали простые кодировки, часто привязанные к конкретному оборудованию. В 1963 году Американский национальный институт стандартов (ANSI) утвердил стандарт ASCII (American Standard Code for Information Interchange), который использовал 7 бит для кодирования 128 символов (0–127). ASCII включал латинский алфавит, цифры, знаки препинания и управляющие символы. Однако 7-битная кодировка не могла охватить символы других языков (например, кириллицу, немецкие умлауты, французские акценты).

Расширение до 8 бит

С переходом на 8-битные байты появилась возможность кодировать 256 символов (0–255). Первые 128 кодов (0–127) обычно соответствовали ASCII, а коды 128–255 (так называемая «верхняя половина» таблицы) отводились под дополнительные символы. Каждый производитель или организация разрабатывала собственные таблицы для своих нужд. Так возникли кодовые страницы.

Эпоха IBM PC

Ключевую роль в популяризации кодовых страниц сыграла компания IBM. В 1981 году с выпуском IBM PC была представлена кодовая страница CP437 (OEM-кодировка), которая включала символы псевдографики, математические знаки и некоторые буквы европейских языков. CP437 стала стандартом для текстового режима MS-DOS.

Для работы с разными языками IBM разработала серию кодовых страниц, обозначаемых номерами (например, CP850 — для западноевропейских языков, CP866 — для кириллицы). Каждая кодовая страница представляла собой фиксированную таблицу из 256 символов.

Кодовые страницы Windows

Компания Microsoft при разработке операционной системы Windows создала собственные кодовые страницы, известные как Windows-125x. Они отличались от OEM-кодировок IBM, так как были оптимизированы для графического интерфейса и не содержали символов псевдографики. Наиболее известные:

Кодовые страницы в других системах

В мире Unix и Linux широкое распространение получили кодировки стандарта ISO 8859 (например, ISO 8859-1 для латиницы, ISO 8859-5 для кириллицы). Они также являлись 8-битными кодовыми страницами.

Для японского, китайского и корейского языков, где количество символов превышает 256, использовались многобайтовые кодировки (например, Shift JIS, EUC-JP, Big5). Однако в контексте IBM и Microsoft они также часто назывались кодовыми страницами (например, CP932 для Shift JIS).

Закат эпохи кодовых страниц

С развитием интернета и необходимостью единой кодировки для всех языков мира возник стандарт Unicode. Unicode использует 16-битные (UCS-2) или 32-битные (UTF-32) коды, а также переменную длину кодирования (UTF-8, UTF-16). UTF-8, в частности, стал доминирующей кодировкой в вебе, так как обратно совместим с ASCII и эффективен для латиницы. Начиная с 2000-х годов, операционные системы и приложения постепенно переходят на Unicode, оставляя кодовые страницы для обратной совместимости со старыми данными.

Классификация

Кодовые страницы можно классифицировать по нескольким признакам.

По производителю или стандарту

По количеству байт на символ

По языковой поддержке

Устройство и характеристики

Структура однобайтовой кодовой страницы

Однобайтовая кодовая страница представляет собой таблицу из 256 записей. Каждая запись имеет индекс (от 0 до 255) и соответствующее ему графическое изображение символа или управляющую функцию.

Проблема несовместимости

Главный недостаток кодовых страниц — несовместимость. Текст, созданный в одной кодовой странице, при открытии в другой будет отображаться неправильно (так называемый «кракозябры»). Например, файл, сохранённый в кодировке Windows-1251, при попытке прочитать его как CP866 или KOI8-R будет содержать бессмысленный набор символов.

Идентификация

Для идентификации кодовой страницы в операционной системе или приложении используется числовой номер. В Windows номера кодовых страниц задаются в реестре. В Unix-подобных системах для указания локали используется строка вида ru_RU.CP1251 или ru_RU.KOI8-R.

Применение

Историческое

Современное

Примеры кодовых страниц

Номер (CP)НазваниеЯзыковая поддержкаПримечание
437OEM-USАнглийский, псевдографикаСтандартная кодировка IBM PC
850OEM Multilingual Latin 1Западноевропейские языкиЗамена CP437 в Европе
852OEM Latin 2Центральноевропейские языки (польский, чешский, венгерский)
855OEM CyrillicКириллица (основная)Использовалась в MS-DOS для кириллицы до появления CP866
866OEM RussianКириллица (русский, украинский, белорусский)Стандартная кодировка MS-DOS для России
932Shift JISЯпонскийМногобайтовая кодировка
936GBKУпрощённый китайскийМногобайтовая кодировка
1250Windows Central EuropeЦентральноевропейские языки
1251Windows CyrillicКириллица (русский, украинский, белорусский, болгарский, сербский)Самая распространённая кириллическая кодировка в Windows
1252Windows Latin 1Западноевропейские языки
KOI8-RKOI8-RКириллица (русский)Популярна в Unix-системах и в российском интернете 1990-х годов
ISO 8859-1Latin 1Западноевропейские языкиСтандарт ISO
ISO 8859-5CyrillicКириллицаСтандарт ISO

Критика

Основная критика кодовых страниц связана с их фундаментальным ограничением: невозможностью одновременно работать с символами из разных языков в одном документе. Для переключения между языками требовалось менять кодовую страницу, что приводило к путанице и потере данных. С развитием глобализации и интернета это стало серьёзной проблемой, которую решил Unicode.

Кроме того, существовало множество нестандартизированных и конфликтующих кодовых страниц, особенно для кириллицы (CP866, Windows-1251, KOI8-R, ISO 8859-5, MacCyrillic), что создавало значительные трудности при обмене данными.

См. также

Источники

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

На главную BFOmetr →