Code page 866 (CCSID 866) (CP 866, "DOS Cyrillic Russian") 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.
A number of variants were used in different Russian territories that had slightly different sets of characters.
Character 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.
{|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
Variants
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)
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
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.
{|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
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. 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,
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
LST 1284
Lithuanian Standard LST 1284:1993, known as Code page 1119 or unofficially as Code page 772,
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
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 F2<sub>hex</sub> through F9<sub>hex</sub> inclusive, which are replaced with Ukrainian letters. matches code page 866 for all points except for F8<sub>hex</sub>, F9<sub>hex</sub>, and FC<sub>hex</sub> through FE<sub>hex</sub> inclusive, which are replaced with otherwise-missing Ukrainian and Belarusian letters, in the process displacing the bullet character (∙) from F9<sub>hex</sub> to FE<sub>hex</sub>. The differing rows are shown below.
{|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
{|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
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 FD<sub>hex</sub>, replacing the universal currency sign (¤).
IBM code page/CCSID 848 is a variant of code page/CCSID 1125 with the euro sign at FD<sub>hex</sub>, replacing ¤.
IBM code page/CCSID 849 is a variant of code page/CCSID 1131 with the euro sign at FB<sub>hex</sub>, 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.
{|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
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".
{|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|}
FreeDOS
FreeDOS provides additional unofficial extensions of code page 866 for various non-Slavic languages:
- 30002 – Cyrillic Tajik
- 30008 – Cyrillic Abkhaz and Ossetian
- 30010 – Cyrillic Gagauz and Moldovan
- 30011 – Cyrillic Russian Southern District (Kalmyk, Karachay-Balkar, Ossetian, North Caucasian)
- 30012 – Cyrillic Russian Siberian and Far Eastern Districts (Altai, Buryat, Khakas, Tuvan, Yakut, Tungusic, Paleo-Siberian)
- 30013 – Cyrillic Volga District – Turkic languages (Bashkir, Chuvash, Tatar)
- 30014 – Cyrillic Volga District – Finno-Ugric languages (Mari, Udmurt)
- 30015 – Cyrillic Khanty
- 30016 – Cyrillic Mansi
- 30017 – Cyrillic Northwestern District (Cyrillic Nenets, Latin Karelian, Latin Veps)
- 30018 – Latin Tatar and Cyrillic Russian
- 30019 – Latin Chechen and Cyrillic Russian
- 58152 – Cyrillic Kazakh with euro
- 58210 – Cyrillic Azeri
- 59234 – Cyrillic Tatar
- 60258 – Latin Azeri and Cyrillic Russian
- 62306 – Cyrillic Uzbek
Code page 900
Before Microsoft's final code page for Russian MS-DOS 4.01 was registered with IBM by Franz Rau of Microsoft<!-- Germany --> 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<!-- by Yuri Starikov -->, 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.
Notes
References
</references>
