Reference articles on history, science, culture and more
Encyclopedia

Code page 866

Computer character set for Russian

Image credit is listed at the end of this article.

Code page 866 (CCSID 866) (CP 866, "DOS Cyrillic Russian") is a code page used under DOS and OS/2 in Russia to write Cyrillic script. It is based on the "alternative code page" (Russian: Альтернативная кодировка) developed in 1984 in IHNA AS USSR and published in 1986 by a research group at the Academy of Science of the USSR. The code page was widely used during the DOS era because it preserves all of the pseudographic symbols of code page 437 (unlike the "Main code page" or Code page 855) and maintains alphabetic order (although non-contiguously) of Cyrillic letters (unlike KOI8-R). Initially this encoding was only available in the Russian version of MS-DOS 4.01 (1990), but with MS-DOS 6.22 it became available in any language version.

The WHATWG Encoding Standard, which specifies the character encodings permitted in HTML5 which compliant browsers must support, includes Code page 866. It is the only single-byte encoding listed which is not named as an ISO 8859 part, Mac OS specific encoding, Microsoft Windows specific encoding (Windows-874 or Windows-125x) or KOI-8 variant. Authors of new pages and the designers of new protocols are instructed to use UTF-8 instead.

A number of variants were used in different Russian territories that had slightly different sets of characters.

01Character set

Each non-ASCII character is shown with its equivalent Unicode code point. The first half (code points 0-127) of this table is the same as that of code page 437.

Code page 866
0 1 2 3 4 5 6 7 8 9 A B C D E F
0x NUL 263A 263B 2665 2666 2663 2660 2022 25D8 25CB 25D9 2642 2640 266A 266B 263C
1x ►25BA ◄25C4 ↕2195 203C 00B6 §00A7 ▬25AC ↨21A8 ↑2191 ↓2193 →2192 ←2190 221F ↔2194 ▲25B2 ▼25BC
2x  SP  ! " # $ % & ' ( ) * + , - . /
3x 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4x @ A B C D E F G H I J K L M N O
5x P Q R S T U V W X Y Z [ \ ] ^ _
6x ` a b c d e f g h i j k l m n o
7x p q r s t u v w x y z { | } ~ 2302
8x А0410 Б0411 В0412 Г0413 Д0414 Е0415 Ж0416 З0417 И0418 Й0419 К041A Л041B М041C Н041D О041E П041F
9x Р0420 С0421 Т0422 У0423 Ф0424 Х0425 Ц0426 Ч0427 Ш0428 Щ0429 Ъ042A Ы042B Ь042C Э042D Ю042E Я042F
Ax а0430 б0431 в0432 г0433 д0434 е0435 ж0436 з0437 и0438 й0439 к043A л043B м043C н043D о043E п043F
Bx ░2591 ▒2592 ▓2593 │2502 ┤2524 ╡2561 ╢2562 ╖2556 ╕2555 ╣2563 ║2551 ╗2557 ╝255D ╜255C ╛255B ┐2510
Cx └2514 ┴2534 ┬252C ├251C ─2500 ┼253C ╞255E ╟255F ╚255A ╔2554 ╩2569 ╦2566 ╠2560 ═2550 ╬256C ╧2567
Dx ╨2568 ╤2564 ╥2565 ╙2559 ╘2558 ╒2552 ╓2553 ╫256B ╪256A ┘2518 ┌250C █2588 ▄2584 ▌258C ▐2590 ▀2580
Ex р0440 с0441 т0442 у0443 ф0444 х0445 ц0446 ч0447 ш0448 щ0449 ъ044A ы044B ь044C э044D ю044E я044F
Fx Ё0401 ё0451 Є0404 є0454 Ї0407 ї0457 Ў040E ў045E °00B0 2219 ·00B7 221A 2116 ¤00A4 25A0 NBSP
00A0
  Symbols and punctuation

02Variants

There existed a few variants of the code page, but the differences were mostly in the last 16 code points (240-255).

Alternative code page

The original version of the code page by Bryabrin et al. (1986) is called the "Alternative code page" (Russian: Альтернативная кодировка), to distinguish it from the "Main code page" (Russian: Основная кодировка) by the same authors. It supports only Russian and Bulgarian. It is mostly the same as code page 866, except for codes F2hex through F7hex (which code page 866 changes to Ukrainian and Belarusian letters) and codes F8hex through FBhex (where code page 866 matches code page 437 instead). The differing row is shown below.

Alternative code page
0 1 2 3 4 5 6 7 8 9 A B C D E F
Fx Ё0401 ё0451 🮣1FBA3 🮢1FBA2 🮠1FBA0 🮡1FBA1 2192 2190 2193 2191 ÷00F7 ±00B1 2116 ¤00A4 25A0 NBSP
00A0
  Characters later changed by code page 866

Modified code page 866

An unofficial variant with code points 240-255 identical to code page 437. However, the letter Ёё is usually placed at 240 and 241. This version supports only Russian and Bulgarian. The differing row is shown below.

Modified CP 866
0 1 2 3 4 5 6 7 8 9 A B C D E F
Fx Ё0401 ё0451 2265 2264 2320 2321 ÷00F7 2248 °00B0 2219 ·00B7 221A 207F ²00B2 25A0 NBSP
00A0
  Different from compliant code page 866 to match OEM-US

GOST R 34.303-92

The GOST R 34.303-92 standard defines two variants, KOI-8 N1 and KOI-8 N2. These are not to be confused with the KOI-8 encoding, which they do not adhere to.

KOI-8 N2

KOI-8 N2 is the more extensive variant and matches code page 866 and the Alternative code page except for the last row or stick. For this last row, it supports letters for Belarusian and Ukrainian in addition to Russian, but in a layout unrelated to code page 866 or 1125. Notably the Russian Ё/ё (which was unchanged between the Alternative code page and code page 866) is also in a different location. KOI-8 N2's final stick is shown below.

KOI-8 N2 (GOST R 34.303-92)
0 1 2 3 4 5 6 7 8 9 A B C D E F
Fx SHY 2116 Ґ0490 ґ0491 Ё0401 ё0451 Є0404 є0454 І0406 і0456 Ї0407 ї0457 Ў040E ў045E 25A0 NBSP
00A0
  Different from code page 866 and Alternative code page

KOI-8 N1

The other variant, KOI-8 N1, is a subset of KOI-8 N2 which omits the non-Russian Cyrillic letters and mixed single/double lined box-drawing characters, leaving them empty for further internationalization (compare with code page 850). The affected sticks are shown below.

KOI-8 N1 (GOST R 34.303-92)
0 1 2 3 4 5 6 7 8 9 A B C D E F
Bx 2591 2592 2593 2502 2524 2563 2551 2557 255D 2510
Cx 2514 2534 252C 251C 2500 253C 255A 2554 2569 2566 2560 2550 256C
Dx 2518 250C 2588 2584 258C 2590 2580
Ex р0440 с0441 т0442 у0443 ф0444 х0445 ц0446 ч0447 ш0448 щ0449 ъ044A ы044B ь044C э044D ю044E я044F
Fx SHY 2116 Ё0401 ё0451 25A0 NBSP
00A0

Lithuanian variants

KBL

The KBL code page, unofficially known as Code page 771, is the earliest DOS character encoding for Lithuanian. It mostly matches code page 866 and the Alternative code page, but replaces the last row and some block characters with letters from the Lithuanian alphabet not otherwise present in ASCII. The Russian Ё/ё is not supported, similarly to KOI-7.

A modified version, Code page 773, which replaces the Cyrillic letters with Latvian and Estonian letters, also exists.

KBL (Code page 771)
0 1 2 3 4 5 6 7 8 9 A B C D E F
Dx ╨2568 ╤2564 ╥2565 ╙2559 ╘2558 ╒2552 ╓2553 ╫256B ╪256A ┘2518 ┌250C █2588 Ą0104 ą0105 Č010C č010D
Ex р0440 с0441 т0442 у0443 ф0444 х0445 ц0446 ч0447 ш0448 щ0449 ъ044A ы044B ь044C э044D ю044E я044F
Fx Ę0118 ę0119 Ė0116 ė0117 Į012E į012F Š0160 š0161 Ų0172 ų0173 Ū016A ū016B Ž017D ž017E ■25A0 NBSP
00A0
  Different from code page 866 and Alternative code page

LST 1284

Lithuanian Standard LST 1284:1993, known as Code page 1119 or unofficially as Code page 772, mostly matches the "modified" Code page 866, except for the addition of quotation marks in the last row and the replacement of the mixed single-double box-drawing characters with Lithuanian letters (compare code page 850). Unlike KBL, the Russian Ё/ё is retained.

It accompanies LST 1283 (Code page 774/1118), which encodes the additional Lithuanian letters at the same locations as LST 1284, but is based on Code page 437 instead. It was later superseded by LST 1590-1 (Code page 775), which encodes these Lithuanian letters in the same locations, but does not include Cyrillic letters, replacing them with Latvian and Estonian letters.

LST 1284:1993 (Code page 772 / 1119)
0 1 2 3 4 5 6 7 8 9 A B C D E F
Bx ░2591 ▒2592 ▓2593 │2502 ┤2524 Ą0104 Č010C Ę0118 Ė0116 ╣2563 ║2551 ╗2557 ╝255D Į012E Š0160 ┐2510
Cx └2514 ┴2534 ┬252C ├251C ─2500 ┼253C Ų0172 Ū016A ╚255A ╔2554 ╩2569 ╦2566 ╠2560 ═2550 ╬256C Ž017D
Dx ą0105 č010D ę0119 ė0117 į012F š0161 ų0173 ū016B ž017E ┘2518 ┌250C █2588 ▄2584 ▌258C ▐2590 ▀2580
Ex р0440 с0441 т0442 у0443 ф0444 х0445 ц0446 ч0447 ш0448 щ0449 ъ044A ы044B ь044C э044D ю044E я044F
Fx Ё0401 ё0451 2265 2264 „201E “201C ÷00F7 ≈2248 °00B0 ∙2219 ·00B7 √221A ⁿ207F ²00B2 ■25A0 NBSP
00A0
  Different from "modified" code page 866

Ukrainian and Belarusian variants

Ukrainian standard RST 2018-91 is designated by IBM as Code page 1125 (CCSID 1125), abbreviated CP1125, and also known as CP866U, CP866NAV or RUSCII. It matches the original Alternative code page for all points except for F2hex through F9hex inclusive, which are replaced with Ukrainian letters. Code page/CCSID 1131 matches code page 866 for all points except for F8hex, F9hex, and FChex through FEhex inclusive, which are replaced with otherwise-missing Ukrainian and Belarusian letters, in the process displacing the bullet character (∙) from F9hex to FEhex. The differing rows are shown below.

IBM code page 1125 (Ukrainian standard RST 2018-91)
0 1 2 3 4 5 6 7 8 9 A B C D E F
Fx Ё0401 ё0451 Ґ0490 ґ0491 Є0404 є0454 І0406 і0456 Ї0407 ї0457 ÷00F7 ±00B1 2116 ¤00A4 25A0 NBSP
00A0
  Code page 1125 different from Alternative code page
IBM code page 1131 (Belarusian)
0 1 2 3 4 5 6 7 8 9 A B C D E F
Fx Ё0401 ё0451 Є0404 є0454 Ї0407 ї0457 Ў040E ў045E І0406 і0456 ·00B7 ¤00A4 Ґ0490 ґ0491 2219 NBSP
00A0
  Code page 1131 different from code page 866

Hryvnia variants

FreeDOS code page 30040 is a variant of code page 866 which replaces the currency sign (¤) at byte 0xFD with the hryvnia sign (₴, U+20B4).

FreeDOS code page 30039 is a variant of code page 1125 which makes the same replacement.

Euro sign updates

IBM code page/CCSID 808 is a variant of code page/CCSID 866; with the euro sign (€, U+20AC) in position FDhex, replacing the universal currency sign (¤).

IBM code page/CCSID 848 is a variant of code page/CCSID 1125 with the euro sign at FDhex, replacing ¤.

IBM code page/CCSID 849 is a variant of code page/CCSID 1131 with the euro sign at FBhex, replacing ¤.

Lehner-Czech modification

An unofficial modification used in software developed by Michael Lehner and Peter R. Czech. It replaces three mathematic symbols with guillemets and the section sign which are commonly used in the Russian language. (Lehner and Czech created a number of alternative character sets for other European languages as well, including one based on CWI-2 for Hungarian, a Kamenicky-based one for Czech and Slovak, a Mazovia variant for Polish and a seemingly-unique encoding for Lithuanian. The modified row is shown below.

Lehner-Czech modification
0 1 2 3 4 5 6 7 8 9 A B C D E F
Fx Ё0401 ё0451 Є0404 є0454 Ї0407 ї0457 Ў040E ў045E »00BB «00AB ·00B7 §00A7 2116 ¤00A4 25A0 NBSP
00A0
  Different from code page 866

Latvian variant

A Latvian variant, supported by Star printers and FreeDOS, is code page 3012 (earlier FreeDOS called it code page 61282). This encoding is nicknamed "RusLat".

CP3012
0 1 2 3 4 5 6 7 8 9 A B C D E F
Bx 2591 2592 2593 2502 2524 Ā0100 2562 ņ0146 2555 2563 2551 2557 255D Ō014C 255B 2510
Cx 2514 2534 252C 251C 2500 253C ā0101 255F 255A 2554 2569 2566 2560 2550 256C 2567
Dx Š0160 2564 č010D Č010C 2558 2552 ģ0123 Ī012A ī012B 2518 250C 2588 2584 ū016B Ū016A 2580
Ex р0440 с0441 т0442 у0443 ф0444 х0445 ц0446 ч0447 ш0448 щ0449 ъ044A ы044B ь044C э044D ю044E я044F
Fx Ē0112 ē0113 Ģ0122 ķ0137 Ķ0136 ļ013C Ļ013B ž017E Ž017D ō014D ·00B7 221A Ņ0145 š0161 25A0 NBSP
00A0
  Different from code page 866

FreeDOS

FreeDOS provides additional unofficial extensions of code page 866 for various non-Slavic languages:

03Code page 900

Before Microsoft's final code page for Russian MS-DOS 4.01 was registered with IBM by Franz Rau of Microsoft as CP866 in January 1990, draft versions of it developed by Yuri Starikov (Юрий Стариков) of Dialogue were still called code page 900 internally. While the documentation was corrected to reflect the new name before the release of the product, sketches of earlier draft versions still named code page 900 and without Ukrainian and Belarusian letters, which had been added in autumn 1989, were published in the Russian press in 1990. Code page 900 slipped through into the distribution of the Russian MS-DOS 5.0 LCD.CPI codepage information file.

Watch videos about Code page 866Explainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Code page 866, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Images, from Wikimedia Commons:

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.