![]() | |
MIME / IANA | IBM866 |
---|---|
Alias(es) | cp866, 866[1] |
Language(s) | Russian,Bulgarian; Partial support: Ukrainian,[a]Belarusian[b] |
Standard | WHATWG Encoding Standard |
Classification | OEM code page,extended ASCII |
Extends | US-ASCII |
Based on | Alternative code page |
Other related encoding(s) | (See below) |
Code page 866 (CCSID 866)[2] (CP 866, "DOS Cyrillic Russian")[3] is acode page used underDOS andOS/2[4] inRussia to writeCyrillic script.[5][6] 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.[7] The code page was widely used during the DOS era because it preserves all of thepseudographic symbols ofcode page 437 (unlike the "Main code page" or Code page 855) and maintains alphabetic order (although non-contiguously) of Cyrillic letters (unlikeKOI8-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.
TheWHATWG Encoding Standard, which specifies the character encodings permitted inHTML5 which compliant browsers must support,[8] includes Code page 866.[9] It is the only single-byte encoding listed which is not named as anISO 8859 part,Mac OS specific encoding,Microsoft Windows specific encoding (Windows-874 orWindows-125x) orKOI-8 variant.[9] Authors of new pages and the designers of new protocols are instructed to useUTF-8 instead.[10]
Two very similar but not identical encodings are standardised inGOST R 34.303-92[11] asKOI-8 N1 andKOI-8 N2 (not to be confused with the originalKOI-8).
Each non-ASCII character is shown with its equivalentUnicode code point. The first half (code points 0–127) of this table is the same as that ofcode page 437.
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 |
There existed a few variants of the code page, but the differences were mostly in the last 16 code points (240–255).
The original version of the code page by Bryabrin et al. (1986)[7] is called the "Alternative code page" (Russian:Альтернативная кодировка), to distinguish it from the "Main code page" (Russian:Основная кодировка) by the same authors. It supports onlyRussian andBulgarian. It is mostly the same as code page 866, except for codes F2hex through F7hex (which code page 866 changes toUkrainian andBelarusian letters) and codes F8hex through FBhex (where code page 866 matchescode page 437 instead). The differing row is shown below.
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 |
An unofficial variant with code points 240–255 identical tocode page 437. However, the letter Ёё is usually placed at 240 and 241.[18] This version supports onlyRussian andBulgarian. The differing row is shown below.
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 |
The GOST R 34.303-92 standard defines two variants, KOI-8 N1 and KOI-8 N2. These are not to be confused with theKOI-8 encoding, which they do not adhere to.
KOI-8 N2 is the more extensive variant and matches code page 866 and the Alternative code page except for the last row orstick.[c] For this last row, it supports letters forBelarusian andUkrainian 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.[11]
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 |
The other variant, KOI-8 N1, is a subset of KOI-8 N2 which omits the non-Russian Cyrillic letters and mixed single/double linedbox-drawing characters, leaving them empty for further internationalization (compare withcode page 850). The affectedsticks are shown below.[11]
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 |
TheKBL code page, unofficially known as Code page 771,[19] is the earliest DOS character encoding for Lithuanian.[20] It mostly matches code page 866 and the Alternative code page, but replaces the last row and someblock characters with letters from theLithuanian alphabet not otherwise present in ASCII. The RussianЁ/ё is not supported,[20] similarly toKOI-7.
A modified version, Code page 773, which replaces the Cyrillic letters withLatvian andEstonian letters, also exists.[20]
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 |
Lithuanian Standard LST 1284:1993, known as Code page 1119 or unofficially as Code page 772,[19] mostly matches the "modified" Code page 866, except for the addition ofquotation marks in the last row and the replacement of the mixed single-double box-drawing characters with Lithuanian letters (comparecode 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 onCode page 437 instead. It was later superseded by LST 1590-1 (Code page 775),[19] which encodes these Lithuanian letters in the same locations, but does not include Cyrillic letters, replacing them with Latvian and Estonian letters.[20]
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 |
Ukrainian standard RST 2018-91 is designated by IBM as Code page 1125 (CCSID 1125),[25] abbreviated CP1125, and also known as CP866U, CP866NAV or RUSCII.[26] It matches the original Alternative code page for all points except for F2hex through F9hex inclusive, which are replaced withUkrainian letters.[27] Code page/CCSID 1131[28][29] matches code page 866 for all points except for F8hex, F9hex, and FChex through FEhex inclusive, which are replaced with otherwise-missing Ukrainian andBelarusian letters, in the process displacing thebullet character (∙) from F9hex to FEhex.[30][31] The differing rows are shown below.
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 |
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 |
Also, the so-called CP 866ukr code page is a modified version of CP866 with the replacement of Ўў by Іі. Unlike CP1125, it maintains full compatibility of Ukrainian letters with CP866, although Ґґ is missing. It is not included in the standard Windows distributions, but some users install a home-made patch[38] that allows using this encoding to work in command-line programs (such asFAR Manager) with filenames containing the Cyrillic Іі.
FreeDOScode page 30040 is a variant of code page 866 which replaces the currency sign (¤) at byte 0xFB with the hryvnia sign (₴, U+20B4).
FreeDOScode page 30039 is a variant of code page 1125 which makes the same replacement.
IBM code page/CCSID 808 is a variant of code page/CCSID 866; with theeuro sign (€, U+20AC) in position FDhex, replacing theuniversal currency sign (¤).[39][40][41]
IBM code page/CCSID 848 is a variant of code page/CCSID 1125 with the euro sign at FDhex, replacing ¤.[42][43][44]
IBM code page/CCSID 849 is a variant of code page/CCSID 1131 with the euro sign at FBhex, replacing ¤.[45][46][47]
An unofficial modification used in software developed byMichael Lehner andPeter R. Czech. It replaces three mathematic symbols withguillemets and thesection 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 onCWI-2 forHungarian, aKamenicky-based one forCzech andSlovak, aMazovia variant forPolish and a seemingly-unique encoding forLithuanian. The modified row is shown below.
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 |
A Latvian variant, supported byStar printers and FreeDOS, iscode page 3012 (earlier FreeDOS called itcode page 61282). This encoding is nicknamed "RusLat".[48]
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 |
FreeDOS provides additional unofficial extensions of code page 866 for various non-Slavic languages:[49]
Before Microsoft's final code page forRussian 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.[50] Code page 900 slipped through into the distribution of theRussian MS-DOS 5.0 LCD.CPI codepage information file.[51]
User agents must support the encodings defined in the WHATWG Encoding standard, including, but not limited to […]