Windows code page explained

Windows code pages are sets of characters or code pages (known as character encodings in other operating systems) used in Microsoft Windows from the 1980s and 1990s. Windows code pages were gradually superseded when Unicode was implemented in Windows, although they are still supported both within Windows and other platforms, and still apply when Alt code shortcuts are used.

Current Windows versions support Unicode, new Windows applications should use Unicode and not 8-bit character encodings.[1]

There are two groups of system code pages in Windows systems: OEM and Windows-native ("ANSI") code pages.(ANSI is the American National Standards Institute.) Code pages in both of these groups are extended ASCII code pages. Additional code pages are supported by standard Windows conversion routines, but not used as either type of system code page.

ANSI code page

Windows-125x series
Alias:ANSI (misnomer)
Standard:WHATWG Encoding Standard
Extends:ASCII
Prev:ISO 8859
Next:Unicode
UTF-16 (in Win32 API)
UTF-8 (for files)

ANSI code pages (officially called "Windows code pages"[2] after Microsoft accepted the former term being a misnomer[3]) are used for native non-Unicode (say, byte oriented) applications using a graphical user interface on Windows systems. The term "ANSI" is a misnomer because these Windows code pages do not comply with any ANSI (American National Standards Institute) standard; code page 1252 was based on an early ANSI draft that became the international standard ISO 8859-1, which adds a further 32 control codes and space for 96 printable characters. Among other differences, Windows code-pages allocate printable characters to the supplementary control code space, making them at best illegible to standards-compliant operating systems.)

Most legacy "ANSI" code pages have code page numbers in the pattern 125x. However, 874 (Thai) and the East Asian multi-byte "ANSI" code pages (932, 936, 949, 950), all of which are also used as OEM code pages, are numbered to match IBM encodings, none of which are identical to the Windows encodings (although most are similar). While code page 1258 is also used as an OEM code page, it is original to Microsoft rather than an extension to an existing encoding. IBM have assigned their own, different numbers for Microsoft's variants, these are given for reference in the lists below where applicable.

All of the 125x Windows code pages, as well as 874 and 936, are labelled by Internet Assigned Numbers Authority (IANA) as "Windows-number", although "Windows-936" is treated as a synonym for "GBK". Windows code page 932 is instead labelled as "Windows-31J".[4]

ANSI Windows code pages, and especially the code page 1252, were so called since they were purportedly based on drafts submitted or intended for ANSI. However, ANSI and ISO have not standardized any of these code pages. Instead they are either:[3]

Microsoft assigned about twelve of the typography and business characters (including notably, the euro sign, €) in CP1252 to the code points 0x80–0x9F that, in ISO 8859, are assigned to C1 control codes. These assignments are also present in many other ANSI/Windows code pages at the same code-points. Windows did not use the C1 control codes, so this decision had no direct effect on Windows users. However, if included in a file transferred to a standards-compliant platform like Unix or MacOS, the information was invisible and potentially disruptive.

OEM code page

The OEM code pages (original equipment manufacturer) are used by Win32 console applications, and by virtual DOS, and can be considered a holdover from DOS and the original IBM PC architecture. A separate suite of code pages was implemented not only due to compatibility, but also because the fonts of VGA (and descendant) hardware suggest encoding of line-drawing characters to be compatible with code page 437. Most OEM code pages share many code points, particularly for non-letter characters, with the second (non-ASCII) half of CP437.

A typical OEM code page, in its second half, does not resemble any ANSI/Windows code page even roughly. Nevertheless, two single-byte, fixed-width code pages (874 for Thai and 1258 for Vietnamese) and four multibyte CJK code pages (932, 936, 949, 950) are used as both OEM and ANSI code pages. Code page 1258 uses combining diacritics, as Vietnamese requires more than 128 letter-diacritic combinations. This is in contrast to VISCII, which replaces some of the C0 (i.e. ASCII) control codes.

History

Initially, computer systems and system programming languages did not make a distinction between characters and bytes: for the segmental scripts used in most of Africa, the Americas, southern and south-east Asia, the Middle East and Europe, a character needs just one byte, but two or more bytes are needed for the ideographic sets used in the rest of the world. This subsequently led to much confusion. Microsoft software and systems prior to the Windows NT line are examples of this, because they use the OEM and ANSI code pages that do not make the distinction.

Since the late 1990s, software and systems have adopted Unicode as their preferred storage format; this trend has been improved by the widespread adoption of XML which default to UTF-8 but also provides a mechanism for labelling the encoding used.[5] All current Microsoft products and application program interfaces use Unicode internally, but some applications continue to use the default encoding of the computer's 'locale' when reading and writing text data to files or standard output. Therefore, files may still be encountered that are legible and intelligible in one part of the world but unintelligible mojibake in another.

UTF-8, UTF-16

Microsoft adopted a Unicode encoding (first the now-obsolete UCS-2, which was then Unicode's only encoding), i.e. UTF-16 for all its operating systems from Windows NT onwards, but additionally supports UTF-8 (aka CP_UTF8) since Windows 10 version 1803.[6] UTF-16 uniquely encodes all Unicode characters in the Basic Multilingual Plane (BMP) using 16 bits but the remaining Unicode (e.g. emojis) is encoded with a 32-bit (four byte) code while the rest of the industry (Unix-like systems and the web), and now Microsoft chose UTF-8 (which uses one byte for the 7-bit ASCII character set, two or three bytes for other characters in the BMP, and four bytes for the remainder).

List

The following Windows code pages exist:

Windows-125x series

These nine code pages are all extended ASCII 8-bit SBCS encodings, and were designed by Microsoft for use as ANSI codepages on Windows. They are commonly known by their IANA-registered[7] names as windows-<number>, but are also sometimes called cp<number>, "cp" for "code page". They are all used as ANSI code pages; Windows-1258 is also used as an OEM code page.

The Windows-125x series includes nine of the ANSI code pages, and mostly covers scripts from Europe and West Asia with the addition of Vietnam. System encodings for Thai and for East Asian languages were numbered to match similar IBM code pages and are used as both ANSI and OEM code pages; these are covered in following sections.

ID Description Relationship to ISO 8859 or other established encodings
1250[8] [9] Latin 2 / Central European
1251[10] [11] Cyrillic
1252[12] [13] Latin 1 / Western European
1253[14] [15] Greek
1254[16] [17] Turkish
1255[18] [19] Hebrew
1256[20] [21] Arabic
1257[22] [23] Baltic
1258[24] [25] Vietnamese (also OEM)

DOS code pages

These are also ASCII-based. Most of these are included for use as OEM code pages; code page 874 is also used as an ANSI code page.

East Asian multi-byte code pages

These often differ from the IBM code pages of the same number: code pages 932, 949 and 950 only partly match the IBM code pages of the same number, while the number 936 was used by IBM for another Simplified Chinese encoding which is now deprecated and Windows-951, as part of a kludge, is unrelated to IBM-951. IBM equivalent code pages are given in the second column. Code pages 932, 936, 949 and 950/951 are used as both ANSI and OEM code pages on the locales in question.

IDLanguageEncodingdata-sort-type="number" IBM Equivalent!Difference from IBM CCSID of same numberUse
932JapaneseShift JIS (Microsoft variant)943[27] IBM-932 is also Shift JIS, has fewer extensions (but those extensions it has are in common), and swaps some variant Chinese characters (itaiji) for interoperability with earlier editions of JIS C 6226.ANSI/OEM (Japan)
936Chinese (simplified)GBK1386IBM-936 is a different Simplified Chinese encoding with a different encoding method, which has been deprecated since 1993.ANSI/OEM (PRC, Singapore)
949KoreanUnified Hangul Code1363IBM-949 is also an EUC-KR superset, but with different (colliding) extensions.ANSI/OEM (Republic of Korea)
950Chinese (traditional)Big5 (Microsoft variant)1373[28] IBM-950 is also Big5, but includes a different subset of the ETEN extensions, adds further extensions with an expanded trail byte range, and lacks the Euro.ANSI/OEM (Taiwan, Hong Kong)
951Chinese (traditional) including CantoneseBig5-HKSCS (2001 ed.)5471[29] IBM-951 is the double-byte plane from IBM-949 (see above), and unrelated to Microsoft's internal use of the number 951.ANSI/OEM (Hong Kong, 98/NT4/2000/XP with HKSCS patch)
A few further multiple-byte code pages are supported for decoding or encoding using operating system libraries, but not used as either sort of system encoding in any locale.
IDdata-sort-type="number"IBM Equivalent!LanguageEncodingUse
1361-KoreanJohab (KS C 5601-1992 annex 3)Conversion
20000-Chinese (traditional)An encoding of CNS 11643Conversion
20001-Chinese (traditional)TCAConversion
20002-Chinese (traditional)Big5 (ETEN variant)Conversion
20003938Chinese (traditional)IBM 5550Conversion
20004-Chinese (traditional)TeletextConversion
20005-Chinese (traditional)WangConversion
20932954 (roughly)JapaneseEUC-JPConversion
209365479Chinese (simplified)GB 2312Conversion
20949, 51949970KoreanWansung (8-bit with ASCII, i.e. EUC-KR)[30] Conversion

EBCDIC code pages

data-sort-type="number"ID!data-sort-type="number"IBM Equivalent!Description
37Country Extended Code Page for US, Canada, Netherlands, Portugal, Brazil, Australia, New Zealand[31]
500Country Extended Code Page for Belgium, Canada and Switzerland
870EBCDIC Latin-2
875EBCDIC Greek
1026EBCDIC Latin-5 (Turkish)
1047Country Extended Code Page for Open Systems (POSIX)
1140Euro-sign Country Extended Code Page for US, Canada, Netherlands, Portugal, Brazil, Australia, New Zealand
1141Euro-sign Country Extended Code Page for Austria and Germany
1142Euro-sign Country Extended Code Page for Denmark and Norway
1143Euro-sign Country Extended Code Page for Finland and Sweden
1144Euro-sign Country Extended Code Page for Italy
1145Euro-sign Country Extended Code Page for Spain and Latin America
1146Euro-sign Country Extended Code Page for UK
1147Euro-sign Country Extended Code Page for France
1148Euro-sign Country Extended Code Page for Belgium, Canada and Switzerland
1149Euro-sign Country Extended Code Page for Iceland
20273273Country Extended Code Page for Germany
20277277Country Extended Code Page for Denmark/Norway
20278278Country Extended Code Page for Finland/Sweden
20280280Country Extended Code Page for Italy
20284284Country Extended Code Page for Latin America/Spain
20285285Country Extended Code Page for United Kingdom
20290290Japanese Katakana EBCDIC
20297297Country Extended Code Page for France
20420420EBCDIC Arabic
20423423EBCDIC Greek with Extended Latin
20424-x-EBCDIC-KoreanExtended
20833833Korean EBCDIC for N-Byte Hangul
20838838EBCDIC Thai
20871871Country Extended Code Page for Iceland
20880880EBCDIC Cyrillic (DKOI)
20905905EBCDIC Latin-3 (Maltese, Esperanto and Turkish)
20924924EBCDIC Latin-9 (including Euro sign) for Open Systems (POSIX)
210251025EBCDIC Cyrillic (DKOI) with section sign
21027(1027)Japanese EBCDIC (an incomplete implementation of IBM code page 1027,[32] now deprecated)[33]

Unicode-related code pages

data-sort-type="number"ID!data-sort-type="number"IBM Equivalent!Description
12001202, 1203Unicode (BMP of ISO 10646, UTF-16LE). Available only to managed applications.
12011200, 1201Unicode (UTF-16BE). Available only to managed applications.
120001234, 1235UTF-32. Available only to managed applications.
120011232, 1233UTF-32. Big-endian. Available only to managed applications.
65000-Unicode (UTF-7)
650011208, 1209Unicode (UTF-8)

Macintosh compatibility code pages

data-sort-type="number"ID!data-sort-type="number"IBM Equivalent!Description
100001275Apple Macintosh Roman
10001-Apple Macintosh Japanese
10002-Apple Macintosh Chinese (traditional) (BIG-5)
10003-Apple Macintosh Korean
10004-Apple Macintosh Arabic
10005-Apple Macintosh Hebrew
100061280Apple Macintosh Greek
100071283Apple Macintosh Cyrillic
10008-Apple Macintosh Chinese (simplified) (GB 2312)
100101285Apple Macintosh Romanian
10017-Apple Macintosh Ukrainian
10021-Apple Macintosh Thai
100291282Apple Macintosh Roman II / Central Europe
100791286Apple Macintosh Icelandic
100811281Apple Macintosh Turkish
100821284Apple Macintosh Croatian

ISO 8859 code pages

data-sort-type="number"ID!data-sort-type="number"IBM Equivalent!Description
28591819, 5100ISO-8859-1 – Latin-1
28592912ISO-8859-2 – Latin-2
28593913ISO-8859-3 – Latin-3 or South European
28594914ISO-8859-4 – Latin-4 or North European
28595915ISO-8859-5 – Latin/Cyrillic
28596-ISO-8859-6 – Latin/Arabic
28597813, 4909, 9005ISO-8859-7 – Latin/Greek (1987 edition, i.e. without euro sign, drachma sign or iota subscript)[34]
28598-ISO-8859-8 – Latin/Hebrew (visual order; 1988 edition, i.e. without and)
28599920ISO-8859-9 – Latin-5 or Turkish
28600919ISO-8859-10 – Latin-6 or Nordic
28601-ISO-8859-11 – Latin/Thai
28602-ISO-8859-12 – reserved for Latin/Devanagari but abandoned (not supported)
28603921ISO-8859-13 – Latin-7 or Baltic Rim
28604-ISO-8859-14 – Latin-8 or Celtic
28605923ISO-8859-15 – Latin-9
28606-ISO-8859-16 – Latin-10 or South-Eastern European
385961089ISO-8859-6- – Latin/Arabic (logical bidirectional order)
38598916, 5012ISO-8859-8- – Latin/Hebrew (logical bidirectional order; 1988 edition, i.e. without and)

ITU-T code pages

data-sort-type="number"ID!data-sort-type="number"IBM Equivalent!Description
2010510097-bit IA5 IRV (Western European)[35] [36] [37]
2010610117-bit IA5 German (DIN 66003)[38]
2010710187-bit IA5 Swedish (SEN 850200 C)[39]
2010810167-bit IA5 Norwegian (NS 4551-2)[40]
201273677-bit ASCII[41]
202611036T.61 (T.61-8bit)
20269?ISO-6937

KOI8 code pages

data-sort-type="number"ID!data-sort-type="number"IBM Equivalent!Description
20866878Russian – KOI8-R
218661167, 1168Ukrainian – KOI8-U (or KOI8-RU in some versions)[42]

Problems arising from the use of code pages

Microsoft strongly recommends using Unicode in modern applications, but many applications or data files still depend on the legacy code pages.

See also

External links

Notes and References

  1. Web site: Unicode and character sets . Microsoft . 2023-06-13 . 2024-05-27.
  2. Web site: 2016-03-07. Code Pages. 2021-05-26. https://web.archive.org/web/20160307222735/https://msdn.microsoft.com/en-us/goglobal/bb964653.aspx. 2016-03-07.
  3. Web site: Glossary of Terms Used on this Site. December 8, 2018. https://web.archive.org/web/20181208141313/https://msdn.microsoft.com/en-us/goglobal/bb964658.aspx#a. 2018-12-08. The term "ANSI" as used to signify Windows code pages is a historical reference, but is nowadays a misnomer that continues to persist in the Windows community. The source of this comes from the fact that the Windows code page 1252 was originally based on an ANSI draft—which became International Organization for Standardization (ISO) Standard 8859-1. “ANSI applications” are usually a reference to non-Unicode or code page–based applications..
  4. Web site: Character Sets. 2021-05-26. www.iana.org. 2021-05-25. https://web.archive.org/web/20210525003138/https://www.iana.org/assignments/character-sets/character-sets.xhtml. live.
  5. Web site: Extensible Markup Language (XML) 1.1 (Second Edition): Character encodings. W3C. 29 September 2006. 5 October 2020. 19 April 2021. https://web.archive.org/web/20210419133700/https://www.w3.org/TR/xml11/#charencoding. live.
  6. Web site: Windows 10のInsider PreviewでシステムロケールをUTF-8にするオプションが追加される. The option to make UTF-8 the system locale added in Windows 10 Insider Preview. hylom. スラド. ja. 2017-11-14. 2018-05-10. 2018-05-11. https://web.archive.org/web/20180511012606/https://srad.jp/story/17/11/14/0640253/. live.
  7. Web site: Character Sets. IANA. 2019-04-07. 2016-12-03. https://web.archive.org/web/20161203235506/https://www.iana.org/assignments/character-sets/character-sets.xhtml. live .
  8. Web site: Microsoft. Windows 1250. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714112927/http://msdn.microsoft.com/en-us/goglobal/cc305143. live.
  9. Web site: IBM. SBCS code page information document CPGID 01250. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714174544/http://www-01.ibm.com/software/globalization/cp/cp01250.html. live.
  10. Web site: Microsoft. Windows 1251. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714193058/http://msdn.microsoft.com/en-us/goglobal/cc305144. live.
  11. Web site: IBM. SBCS code page information document CPGID 01251. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714134651/http://www-01.ibm.com/software/globalization/cp/cp01251.html. live.
  12. Web site: Microsoft. Windows 1252. 2014-07-06. 2013-05-04. https://web.archive.org/web/20130504221024/http://msdn.microsoft.com/en-us/goglobal/cc305145. live.
  13. Web site: IBM. SBCS code page information document CPGID 01252. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714135559/http://www-01.ibm.com/software/globalization/cp/cp01252.html. live.
  14. Web site: Microsoft. Windows 1253. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714120112/http://msdn.microsoft.com/en-us/goglobal/cc305146. live.
  15. Web site: IBM. SBCS code page information document CPGID 01253. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714173231/http://www-01.ibm.com/software/globalization/cp/cp01253.html. live.
  16. Web site: Microsoft. Windows 1254. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714234606/http://msdn.microsoft.com/en-us/goglobal/cc305147. live.
  17. Web site: IBM. SBCS code page information document CPGID 01254. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714125357/http://www-01.ibm.com/software/globalization/cp/cp01254.html. live.
  18. Web site: Microsoft. Windows 1255. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714233040/http://msdn.microsoft.com/en-us/goglobal/cc305148. live.
  19. Web site: IBM. SBCS code page information document CPGID 01255. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714183315/http://www-01.ibm.com/software/globalization/cp/cp01255.html. live.
  20. Web site: Microsoft. Windows 1256. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714122158/http://msdn.microsoft.com/en-us/goglobal/cc305149. live.
  21. Web site: IBM. SBCS code page information document CPGID 01256. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714180810/http://www-01.ibm.com/software/globalization/cp/cp01256.html. live.
  22. Web site: Microsoft. Windows 1257. 2014-07-06. 2013-03-16. https://web.archive.org/web/20130316005822/http://msdn.microsoft.com/en-us/goglobal/cc305150. live.
  23. Web site: IBM. SBCS code page information document CPGID 01257. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714132230/http://www-01.ibm.com/software/globalization/cp/cp01257.html. live.
  24. Web site: Microsoft. Windows 1258. 2014-07-06. 2013-10-25. https://web.archive.org/web/20131025142227/http://msdn.microsoft.com/en-us/goglobal/cc305151. live.
  25. Web site: IBM. SBCS code page information document CPGID 01258. 2014-07-06. 2014-07-14. https://web.archive.org/web/20140714123221/http://www-01.ibm.com/software/globalization/cp/cp01258.html. live.
  26. Web site: IBM. SBCS code page information document - CPGID 00437. 2014-07-04. 2016-06-09. https://web.archive.org/web/20160609084933/https://www-01.ibm.com/software/globalization/cp/cp00437.html. live.
  27. Web site: IBM-943 and IBM-932. IBM. IBM Knowledge Center. 2020-07-08. 2018-08-18. https://web.archive.org/web/20180818214409/https://www.ibm.com/support/knowledgecenter/en/ssw_aix_71/com.ibm.aix.nlsgdrf/ibm-943_ibm-932.htm. live .
  28. Web site: Converter Explorer: ibm-1373_P100-2002 . ICU Demonstration . . 2020-06-27 . 2021-05-26 . https://web.archive.org/web/20210526173749/https://icu4c-demos.unicode.org/icu-bin/convexp?conv=ibm-1373_P100-2002 . live .
  29. Web site: https://web.archive.org/web/20141129233053/http://www-01.ibm.com/software/globalization/ccsid/ccsid5471.html. 2014-11-29. dead. Coded character set identifiers – CCSID 5471. IBM Globalization. IBM.
  30. Web site: dump_krwansung_codepage: build Korean Wansung table from the KSX1001 file. make_unicode: Generate code page .c files from ftp.unicode.org descriptions. Alexandre. Julliard. Wine Project. 2021-03-14. 2021-05-26. https://web.archive.org/web/20210526173718/https://source.winehq.org/git/wine.git/blob/6f68543692a7588daa581d00c475715395036b15:/tools/make_unicode#l946. live.
  31. Web site: IBM. SBCS code page information document - CPGID 00037. 2014-07-04. 2014-07-14. https://web.archive.org/web/20140714185507/http://www-01.ibm.com/software/globalization/cp/cp00037.html. live.
  32. Web site: Code Page 21027 "Extended/Ext Alpha Lowercase" . Steele . Shawn . . 2005-09-12 . 2019-04-06 . 2019-04-06 . https://web.archive.org/web/20190406193522/https://blogs.msdn.microsoft.com/shawnste/2005/09/12/code-page-21027-extendedext-alpha-lowercase/ . live .
  33. Web site: Code Page Identifiers. docs.microsoft.com. 2019-04-07. 2019-04-07. https://web.archive.org/web/20190407185239/https://docs.microsoft.com/en-gb/windows/desktop/Intl/code-page-identifiers. live.
  34. Web site: Relationship with Windows Code Pages . Crate encoding_rs . Docs.rs . Mozilla Foundation . Mozilla Foundation.
  35. Web site: Code Page Identifiers . . . 2014 . 2016-06-19 . live . https://web.archive.org/web/20160619132819/https://msdn.microsoft.com/de-de/en-en/library/windows/desktop/dd317756(v=vs.85).aspx . 2016-06-19.
  36. Web site: Web Encodings - Internet Explorer - Encodings . 2012-10-23 . WHATWG Wiki . 2016-06-20 . live . https://web.archive.org/web/20160620184648/https://wiki.whatwg.org/wiki/Web_Encodings#Encodings_3 . 2016-06-20.
  37. Web site: Western European (IA5) encoding - Windows charsets . Antonin . Foller . 2014 . 2011 . WUtils.com - Online web utility and help . Motobit Software . 2016-06-20 . live . https://web.archive.org/web/20160620183843/http://wutils.com/encodings/x-ia5 . 2016-06-20.
  38. Web site: German (IA5) encoding – Windows charsets . Antonin . Foller . 2014 . 2011 . WUtils.com – Online web utility and help . Motobit Software . 2016-06-20 . live . https://web.archive.org/web/20160620183739/http://wutils.com/encodings/x-ia5-german . 2016-06-20.
  39. Web site: Swedish (IA5) encoding - Windows charsets . Antonin . Foller . 2014 . 2011 . WUtils.com - Online web utility and help . Motobit Software . 2016-06-20 . live . https://web.archive.org/web/20160620183231/http://wutils.com/encodings/x-ia5-swedish . 2016-06-20.
  40. Web site: Norwegian (IA5) encoding - Windows charsets . Antonin . Foller . 2014 . 2011 . WUtils.com - Online web utility and help . Motobit Software . 2016-06-20 . live . https://web.archive.org/web/20160620183449/http://wutils.com/encodings/x-ia5-norwegian . 2016-06-20.
  41. Web site: US-ASCII encoding - Windows charsets . Antonin . Foller . 2014 . 2011 . WUtils.com - Online web utility and help . Motobit Software . 2016-06-20 . live . https://web.archive.org/web/20160620192058/http://wutils.com/encodings/us-ascii . 2016-06-20.
  42. Web site: Review of 8-bit Cyrillic encodings universe . Valentin . Nechayev . 2013 . 2001 . 2016-12-05 . live . https://web.archive.org/web/20161205134629/http://segfault.kiev.ua/cyrillic-encodings/ . 2016-12-05.