CP866
«Альтернати́вная кодиро́вка» («Альтернативная кодировка ГОСТ») — основанная на CP437 кодовая страница, где все специфические европейские символы во второй половине заменены на кириллицу, а псевдографические символы оставлены нетронутыми. Это не портит вида программ, использующих эти символы для отрисовки текстовых окон, а также обеспечивает использование в них символов кириллицы. Недостатком данной кодировке является разрыв в порядке малых кириллических букв. Разработана в 1984 году в ИВНД Академии наук СССР, была названа и описана в статье[1] и была весьма популярна (в феврале 1989 года 85 % опрошенных заявляли, что используют её)[2].
Исторически существовало много вариантов альтернативной кодировки, но все различия касаются только области 0xF0—0xFF (240—255).
Окончательным стандартом стала кодировка IBM CP866, поддержка которой была добавлена в MS-DOS версии 4.01[3] (только в локализованных и переведённых на русский язык выпусках) и повсеместно — в MS-DOS версии 6.22. В этой кодировке записываются имена файлов в системе FAT (и короткие имена в VFAT). Поныне является популярной стандартной кодировкой Microsoft в среде DOS и OS/2, используется в консоли русифицированных систем семейства Windows NT. Вне среды MS-DOS в Microsoft Windows заменена стандартной кодировкой CP1251, а в операционных системах Windows NT и следующих за ней (Windows 2000, Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7) — кодировками UCS-2 и UTF-16, основанными на стандарте Юникод.
В России кодировка частично установлена ГОСТ Р 34.303-92[4], где она названа КОИ-8 Н1 (не путать с КОИ-8); однако её последний ряд (0xF0—0xFF) не совпадает с аналогичным рядом в CP866.
CP866
Первая половина таблицы (коды 0 - 127) полностью соответствует кодировке CP437. В приведённых таблицах числа под буквами обозначают шестнадцатеричный код буквы в Юникоде. Ниже приведена только вторая половина таблицы, отличающаяся от CP437:
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8. |
А 410 |
Б 411 |
В 412 |
Г 413 |
Д 414 |
Е 415 |
Ж 416 |
З 417 |
И 418 |
Й 419 |
К 41A |
Л 41B |
М 41C |
Н 41D |
О 41E |
П 41F |
9. |
Р 420 |
С 421 |
Т 422 |
У 423 |
Ф 424 |
Х 425 |
Ц 426 |
Ч 427 |
Ш 428 |
Щ 429 |
Ъ 42A |
Ы 42B |
Ь 42C |
Э 42D |
Ю 42E |
Я 42F |
A. |
а 430 |
б 431 |
в 432 |
г 433 |
д 434 |
е 435 |
ж 436 |
з 437 |
и 438 |
й 439 |
к 43A |
л 43B |
м 43C |
н 43D |
о 43E |
п 43F |
B. |
░ 2591 |
▒ 2592 |
▓ 2593 |
│ 2502 |
┤ 2524 |
╡ 2561 |
╢ 2562 |
╖ 2556 |
╕ 2555 |
╣ 2563 |
║ 2551 |
╗ 2557 |
╝ 255D |
╜ 255C |
╛ 255B |
┐ 2510 |
C. |
└ 2514 |
┴ 2534 |
┬ 252C |
├ 251C |
─ 2500 |
┼ 253C |
╞ 255E |
╟ 255F |
╚ 255A |
╔ 2554 |
╩ 2569 |
╦ 2566 |
╠ 2560 |
═ 2550 |
╬ 256C |
╧ 2567 |
D. |
╨ 2568 |
╤ 2564 |
╥ 2565 |
╙ 2559 |
╘ 2558 |
╒ 2552 |
╓ 2553 |
╫ 256B |
╪ 256A |
┘ 2518 |
┌ 250C |
█ 2588 |
▄ 2584 |
▌ 258C |
▐ 2590 |
▀ 2580 |
E. |
р 440 |
с 441 |
т 442 |
у 443 |
ф 444 |
х 445 |
ц 446 |
ч 447 |
ш 448 |
щ 449 |
ъ 44A |
ы 44B |
ь 44C |
э 44D |
ю 44E |
я 44F |
F. |
Ё 401 |
ё 451 |
Є 404 |
є 454 |
Ї 407 |
ї 457 |
Ў 40E |
ў 45E |
° B0 |
∙ 2219 |
· B7 |
√ 221A |
№ 2116 |
¤ A4 |
■ 25A0 |
A0 |
CP866 может использоваться также для украинского и белорусского языков, поскольку включает буквы «Є», «Ї» и «Ў», однако в ней нет кириллической «І», поэтому вместо неё применяли латинскую «I»; также нет буквы «Ґ» (в 1986 году её ещё не было в украинском языке, в 1990 году её вернули).
Другие варианты
(Показаны только последние строки таблиц, поскольку всё остальное совпадает.)
Наиболее распространённый вариант до появления CP866, называемый также «модифицированной альтернативной кодировкой»:
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F. |
Ё 401 |
ё 451 |
≥ 2265 |
≤ 2264 |
⌠ 2320 |
⌡ 2321 |
÷ F7 |
≈ 2248 |
° B0 |
∙ 2219 |
· B7 |
√ 221A |
ⁿ 207F |
² B2 |
■ 25A0 |
A0 |
В КОИ8-R используется такой же набор символов, но в другом порядке
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F. |
Ё 401 |
ё 451 |
≥ 2265 |
≤ 2264 |
⌠ 2320 |
⌡ 2321 |
÷ F7 |
≈ 2248 |
° B0 |
∙ 2219 |
· B7 |
√ 221A |
© A9 |
² B2 |
■ 25A0 |
A0 |
То же самое, но без буквы Ё (все символы 0xF0—0xFF совпадают с соответствующими символами CP437):
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F. |
≡ 2261 |
± B1 |
≥ 2265 |
≤ 2264 |
⌠ 2320 |
⌡ 2321 |
÷ F7 |
≈ 2248 |
° B0 |
∙ 2219 |
· B7 |
√ 221A |
ⁿ 207F |
² B2 |
■ 25A0 |
A0 |
RUSCII (CP866U, CP1125, GOST Ukrainian):
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F. |
Ё 401 |
ё 451 |
Ґ 490 |
ґ 491 |
Є 404 |
є 454 |
І 406 |
і 456 |
Ї 407 |
ї 457 |
· B7 |
√ 221A |
№ 2116 |
¤ A4 |
■ 25A0 |
A0 |
Альтернативная кодировка согласно ГОСТ 19768-87 (по набору символов совпадает с основной кодировкой; в позициях 0xF2—0xF5 должны быть прямые диагональные линии):
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F. |
Ё 401 |
ё 451 |
🮣 1FBA3 |
🮢 1FBA2 |
🮠 1FBA0 |
🮡 1FBA1 |
→ 2192 |
← 2190 |
↓ 2193 |
↑ 2191 |
÷ F7 |
± B1 |
№ 2116 |
¤ A4 |
■ 25A0 |
A0 |
CP866.chuv — кодировка, использовавшаяся для отображения знаков чувашского алфавита:
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
F. |
Ё 401 |
ё 451 |
Ӑ 4D0 |
ӑ 4D1 |
Ӗ 4D6 |
ӗ 4D7 |
Ҫ 4AA |
ҫ 4AB |
Ӳ 4F2 |
ӳ 4F3 |
· B7 |
√ 221A |
№ 2116 |
¤ A4 |
■ 25A0 |
A0 |
CP866LV — кодировка, использовавшаяся в Латвии (Латвийской ССР), часть стандартных символов заменена на буквы латышского алфавита:
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
B. |
░ 2591 |
▒ 2592 |
▓ 2593 |
│ 2502 |
┤ 2524 |
Ā 100 |
╢ 2562 |
ņ 146 |
╕ 2555 |
╣ 2563 |
║ 2551 |
╗ 2557 |
╝ 255D |
╜ 255C |
╛ 255B |
┐ 2510 |
C. |
└ 2514 |
┴ 2534 |
┬ 252C |
├ 251C |
─ 2500 |
┼ 253C |
ā 101 |
╟ 255F |
╚ 255A |
╔ 2554 |
╩ 2569 |
╦ 2566 |
╠ 2560 |
═ 2550 |
╬ 256C |
╧ 2567 |
D. |
Š 160 |
╤ 2564 |
č 10D |
Č 10C |
╘ 2558 |
╒ 2552 |
ģ 123 |
Ī 12A |
ī 12B |
┘ 2518 |
┌ 250C |
█ 2588 |
▄ 2584 |
ū 16B |
Ū 16A |
▀ 2580 |
E. |
р 440 |
с 441 |
т 442 |
у 443 |
ф 444 |
х 445 |
ц 446 |
ч 447 |
ш 448 |
щ 449 |
ъ 44A |
ы 44B |
ь 44C |
э 44D |
ю 44E |
я 44F |
F. |
Ē 112 |
ē 113 |
Ģ 122 |
ķ 137 |
Ķ 136 |
ļ 13C |
Ļ 13B |
ž 17E |
Ž 17D |
∙ 2219 |
· B7 |
√ 221A |
Ņ 145 |
š 161 |
■ 25A0 |
A0 |
Примечания
- Брябрин В. М., Ландау И. Я., Неменман М. Е. О системе кодирования для персональных ЭВМ // Микропроцессорные средства и системы. — 1986. — № 4. — С. 61—63.
- Юрий Стариков. 15-летию Russian MS-DOS 4.01 посвящается .
- MSDN — Code Page 866 MS-DOS Cyrillic CIS 1
- ГОСТ Р 34.303-92. Наборы 8-битных кодированных символов. 8-битный код обмена и обработки информации.