KOI character encodings
A particular feature of the KOI code pages is that the text remains human-readable when the leftmost bit is stripped, should it inadvertently pass through equipment or software that can only deal with 7 bit wide characters. This is due to characters being placed in a special order (128 codepoints apart from the Latin letter they sound most similar to), which, however, does not correspond to the alphabetic order in any language that is written in Cyrillic and necessitates the use of lookup tables to perform sorting.
These encodings are derived from ASCII on the base of some correspondence between Latin and Cyrillic (nearly phonetical), which was already used in Russian dialect of Morse code and in MTK-2 telegraph code. The first 26 characters from А (0xE1) in KOI8-R are А, Б, Ц, Д, Е, Ф, Г, Х, И, Й, К, Л, М, Н, О, П, Я, Р, С, Т, У, Ж, В, Ь, Ы, З.
The original KOI encoding (1967) was a 7-bit code page named KOI-7 (КОИ-7), which did not contain lowercase letters. In KOI-7, the codes of the 31 or 32 Russian letters are ordered according to the Latin letters. Other code points are the same as in ASCII (however, the dollar sign $ (code point 24hex) may be replaced by the universal currency sign ¤).
Later derivatives of KOI-8 constitute the family of encodings variously known as KOI8, KOI 8 and KOI-8.
The family members are:
- KOI8-B (with Ёё and Ъ)
- KOI8-R / KOI8-RUSSIA for Russian and Bulgarian (RFC 1489).
- KOI8-U / KOI8-UKRAINE for Ukrainian (RFC 2319).
- KOI8-RU for Ukrainian, Belorussian and Russian.
- KOI8-T for Tajik.
- KOI8-C, also KOI8-CA, a proposal for Caucasus and Central Asia; hardly ever been used.
- ISO-IR-111 / KOI8-E (ECMA-113 (1st ed., 1986), multilingual for Slavic languages).
- KOI8-F, KOI-8 Unified. Includes the letter allocations from both KOI8-U and KOI8-E, with a subset of the pseudographics from KOI8-R.
- KOI8-K1 "Cyrillic-1" (defined in CSN 36 9103, ST SEV 358-88)
- KOI8-O (formerly KOI8-C) for Old Russian orthography.
There are two variants:
- DKOI K1 (ДКОИ К1), each Cyrillic letter is given its own code point.
- DKOI K2 (ДКОИ К2), some Cyrillic letters (А, В, Е, К, М, Н, О, Р, С, Т, Х, а, е, о, р, с, у, х) are merged with visually identical Latin letters.
Some encodings are called KOI, but define Latin alphabets:
- KOI8-CS / KOI8-CS2 for Czech and Slovak (ČSN (Czech technical standard) 369103, devised by the Comecon. This encoded Latin with diacritics, as used in Czech and Slovak, rather than Cyrillic, but the basic idea was the same - text should remain legible with the 8-th bit cleared, thus e.g. Č became C etc.).
- KOI8-L2 "Latin-2" (defined in CSN 36 9103), ISO IR 139 (almost identical to ISO 8859-2 (1987), but has the dollar sign and currency sign swapped)
- DKOI CS2 (defined in CSN 36 9103)
- DKOI L2 (defined in CSN 36 9103)
- Czyborra, Roman (1998-11-30) [1998-05-25]. "The Cyrillic Charset Soup". Archived from the original on 2016-12-03. Retrieved 2016-12-03.
- Flohr, Guido; Chernov, Andrey A. (2016) . "Locale::RecodeData::KOI_8 - Conversion routines for KOI-8". CPAN libintl-perl. 1.0. Archived from the original on 2017-01-15. Retrieved 2017-01-15.
- da Cruz, Frank (2010-04-02). "Kermit and MIME Character-Set Names". The Kermit Project. Columbia University, New York, USA. Archived from the original on 2016-12-03. Retrieved 2016-12-02.
- Yuri Demchenko. Registration of a Ukrainian Cyrillic Character Set KOI8-RU (as extension to Russian KOI8-R and ISO-IR-111) (Internet Draft). 1997. (Expired).
- Flohr, Guido (2016) . "Locale::RecodeData::KOI8_RU - Conversion routines for KOI8-RU". CPAN libintl-perl. Archived from the original on 2017-01-15. Retrieved 2017-01-15.
- "SBCS code page information - CPGID: 01167 / Name: Belarusian/Ukrainian KOI8-RU". IBM Software: Globalization: Coded character sets and related resources: Code pages by CPGID: Code page identifiers. IBM. C-H 3-3220-050. Archived from the original on 2017-02-18. Retrieved 2017-02-18.  
- "CCSID information document; CCSID 1167; KOI8-RU". IBM. Archived from the original on 2017-02-18. Retrieved 2017-02-18.
- Leisher, Mark (2008) [1999-12-20]. "KOI8-RU Belorusian/Ukrainian Cyrillic to Unicode 2.1 mapping table". Department of Mathematical Sciences, New Mexico State University. Archived from the original on 2017-02-19. Retrieved 2017-02-18.
- Flohr, Guido; Davis, Michael (2016) . "Locale::RecodeData::KOI8_T - Conversion routines for KOI8-T". CPAN libintl-perl. Archived from the original on 2017-01-15. Retrieved 2017-01-15.
- "IANA Character Sets".
- ECMA-113. 8-Bit Single-Byte Coded Graphic Character Sets - Latin/Cyrillic Alphabet (1st ed., June 1986)
- "Cyrillic encodings (Charsets). Small description".
- Leisher, Mark (2008) [1998-03-05]. "KOI8 Unified Cyrillic to Unicode 2.1 mapping table". Department of Mathematical Sciences, New Mexico State University. Archived from the original on 2017-02-19. Retrieved 2017-02-18.
- Serge Winitzki. Extended Cyrillic Character Set KOI8-C (Internet Draft). 2002. (Expired).
- (in Russian) ГОСТ Р 34.303-92. Наборы 8-битных кодированных символов. 8-битный код обмена и обработки информации. = 8-bit coded character sets. 8-bit code for information interchange.
- Petrlik, Lukas (1996-06-19). "The Czech and Slovak Character Encoding Mess Explained". cs-encodings-faq. 1.10. Archived from the original on 2016-06-21. Retrieved 2016-06-21.
- "Stanislav Pecha - ASCII". Archived from the original on 2011-03-21. Retrieved 2011-04-19.
- Kornai, Andras; Birnbaum, David J.; da Cruz, Frank; Davis, Bur; Fowler, George; Paine, Richard B.; Paperno, Slava; Simonsen, Keld J.; Thobe, Glenn E.; Vulis, Dimitri; van Wingen, Johan W. (1993-03-13). "CYRILLIC ENCODING FAQ Version 1.3". 1.3. Retrieved 2017-02-18.
- "Kodierungen und Zeichensätze" [Encodings and character sets]. Robotron Technik (Virtual computer museum) (in German). 2016-11-29. ASCII-Code / KOI-Code. Retrieved 2017-02-21.
- "The Home of the KOI8-R since 1995". 1995. Retrieved 2016-12-05.
- Hohlov, Yu. E. "Cyrillic Information Representation in Electronic Form - Character Set (Code Page) Tables". Archived from the original on 2016-12-05. Retrieved 2016-12-05.
- Nechayev, Valentin (2013) . "Review of 8-bit Cyrillic encodings universe". Archived from the original on 2016-12-05. Retrieved 2016-12-05.