From Wikipedia, the free encyclopedia
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,[citation needed] 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 (UTF-8) 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.
Windows-125x series
Alias(es) | ANSI (misnomer) |
---|---|
Standard | WHATWG Encoding Standard |
Extends | ASCII |
Preceded by | ISO 8859 |
Succeeded by | 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,[3] 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]
- Supersets of the standard sets such as those of ISO 8859 and the various national standards (like Windows-1252 vs. ISO-8859-1),
- Major modifications of these (making them incompatible to various degrees, like Windows-1250 vs. ISO-8859-2)
- Having no parallel encoding (like Windows-1257 vs. ISO-8859-4; ISO-8859-13 was introduced much later). Also, Windows-1251 follows neither the ISO-standardised ISO-8859-5 nor the then-prevailing KOI-8.
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.[citation needed]
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.
Early computer systems had limited storage and restricted the number of bits available to encode a character. Although earlier proprietary encodings had fewer, the American Standard Code for Information Interchange (ASCII) settled on seven bits: this was sufficient to encode a 96 member subset of the characters used in the US. As eight-bit bytes came to predominate, Microsoft (and others) expanded the repertoire to 224, to handle a variety of other uses such a box-drawing symbols. The need to provide precomposed characters for the Western European and South American markets required a different character set: Microsoft established the principle of code pages, one for each alphabet. 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. The code-page model was unable to handle this challenge.
Since the late 1990s, software and systems have adopted Unicode as their preferred character encoding format: Unicode is designed to handle millions of characters. All current Microsoft products and application program interfaces use Unicode internally,[citation needed] but some applications continue to use the default encoding[clarification needed] of the computer’s ‘locale’ when reading and writing text data to files or standard output.[citation needed] Therefore, files may still be encountered that are legible and intelligible in one part of the world but unintelligible mojibake in another.
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.[5]
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).
The following Windows code pages exist:
Windows-125x series
[edit]
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[6] 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[7][8] | Latin 2 / Central European | Similar to ISO-8859-2 but moves several characters, including multiple letters. |
1251[9][10] | Cyrillic | Incompatible with both ISO-8859-5 and KOI-8. |
1252[11][12] | Latin 1 / Western European | Superset of ISO-8859-1 (without C1 controls). Letter repertoire accordingly similar to CP850. |
1253[13][14] | Greek | Similar to ISO 8859-7 but moves several characters, including a letter. |
1254[15][16] | Turkish | Superset of ISO 8859-9 (without C1 controls). |
1255[17][18] | Hebrew | Almost a superset of ISO 8859-8, but with two incompatible punctuation changes. |
1256[19][20] | Arabic | Not compatible with ISO 8859-6; rather, OEM Code page 708 is an ISO 8859-6 (ASMO 708) superset. |
1257[21][22] | Baltic | Not ISO 8859-4; the later ISO 8859-13 is closely related, but with some differences in available punctuation. |
1258[23][24] | Vietnamese (also OEM) | Not related to VSCII or VISCII, uses fewer base characters with combining diacritics. |
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.
- 437 – IBM PC US, 8-bit SBCS extended ASCII.[25] Known as OEM-US, the encoding of the primary built-in font of VGA graphics cards.
- 708 – Arabic, extended ISO 8859-6 (ASMO 708)
- 720 – Arabic, retaining box drawing characters in their usual locations
- 737 – «MS-DOS Greek». Retains all box drawing characters. More popular than 869.
- 775 – «MS-DOS Baltic Rim»
- 850 – «MS-DOS Latin 1». Full (re-arranged) repertoire of ISO 8859-1.
- 852 – «MS-DOS Latin 2»
- 855 – «MS-DOS Cyrillic». Mainly used for South Slavic languages. Includes (re-arranged) repertoire of ISO-8859-5. Not to be confused with cp866.
- 857 – «MS-DOS Turkish»
- 858 – Western European with euro sign
- 860 – «MS-DOS Portuguese»
- 861 – «MS-DOS Icelandic»
- 862 – «MS-DOS Hebrew»
- 863 – «MS-DOS French Canada»
- 864 – Arabic
- 865 – «MS-DOS Nordic»
- 866 – «MS-DOS Cyrillic Russian», cp866. Sole purely OEM code page (rather than ANSI or both) included as a legacy encoding in WHATWG Encoding Standard for HTML5.
- 869 – «MS-DOS Greek 2», IBM869. Full (re-arranged) repertoire of ISO 8859-7.
- 874 – Thai, also used as the ANSI code page, extends ISO 8859-11 (and therefore TIS-620) with a few additional characters from Windows-1252. Corresponds to IBM code page 1162 (IBM-874 is similar but has different extensions).
East Asian multi-byte code pages
[edit]
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.
ID | Language | Encoding | IBM Equivalent | Difference from IBM CCSID of same number | Use |
---|---|---|---|---|---|
932 | Japanese | Shift JIS (Microsoft variant) | 943[26] | 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) |
936 | Chinese (simplified) | GBK | 1386 | IBM-936 is a different Simplified Chinese encoding with a different encoding method, which has been deprecated since 1993. | ANSI/OEM (PRC, Singapore) |
949 | Korean | Unified Hangul Code | 1363 | IBM-949 is also an EUC-KR superset, but with different (colliding) extensions. | ANSI/OEM (Republic of Korea) |
950 | Chinese (traditional) | Big5 (Microsoft variant) | 1373[27] | 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) |
951 | Chinese (traditional) including Cantonese | Big5-HKSCS (2001 ed.) | 5471[28] | 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.
ID | IBM Equivalent | Language | Encoding | Use |
---|---|---|---|---|
1361 | — | Korean | Johab (KS C 5601-1992 annex 3) | Conversion |
20000 | — | Chinese (traditional) | An encoding of CNS 11643 | Conversion |
20001 | — | Chinese (traditional) | TCA | Conversion |
20002 | — | Chinese (traditional) | Big5 (ETEN variant) | Conversion |
20003 | 938 | Chinese (traditional) | IBM 5550 | Conversion |
20004 | — | Chinese (traditional) | Teletext | Conversion |
20005 | — | Chinese (traditional) | Wang | Conversion |
20932 | 954 (roughly) | Japanese | EUC-JP | Conversion |
20936 | 5479 | Chinese (simplified) | GB 2312 | Conversion |
20949, 51949 | 970 | Korean | Wansung (8-bit with ASCII, i.e. EUC-KR)[29] | Conversion |
ID | IBM Equivalent | Description |
---|---|---|
37 | Country Extended Code Page for US, Canada, Netherlands, Portugal, Brazil, Australia, New Zealand[30] | |
500 | Country Extended Code Page for Belgium, Canada and Switzerland | |
870 | EBCDIC Latin-2 | |
875 | EBCDIC Greek | |
1026 | EBCDIC Latin-5 (Turkish) | |
1047 | Country Extended Code Page for Open Systems (POSIX) | |
1140 | Euro-sign Country Extended Code Page for US, Canada, Netherlands, Portugal, Brazil, Australia, New Zealand | |
1141 | Euro-sign Country Extended Code Page for Austria and Germany | |
1142 | Euro-sign Country Extended Code Page for Denmark and Norway | |
1143 | Euro-sign Country Extended Code Page for Finland and Sweden | |
1144 | Euro-sign Country Extended Code Page for Italy | |
1145 | Euro-sign Country Extended Code Page for Spain and Latin America | |
1146 | Euro-sign Country Extended Code Page for UK | |
1147 | Euro-sign Country Extended Code Page for France | |
1148 | Euro-sign Country Extended Code Page for Belgium, Canada and Switzerland | |
1149 | Euro-sign Country Extended Code Page for Iceland | |
20273 | 273 | Country Extended Code Page for Germany |
20277 | 277 | Country Extended Code Page for Denmark/Norway |
20278 | 278 | Country Extended Code Page for Finland/Sweden |
20280 | 280 | Country Extended Code Page for Italy |
20284 | 284 | Country Extended Code Page for Latin America/Spain |
20285 | 285 | Country Extended Code Page for United Kingdom |
20290 | 290 | Japanese Katakana EBCDIC |
20297 | 297 | Country Extended Code Page for France |
20420 | 420 | EBCDIC Arabic |
20423 | 423 | EBCDIC Greek with Extended Latin |
20424 | — | x-EBCDIC-KoreanExtended |
20833 | 833 | Korean EBCDIC for N-Byte Hangul |
20838 | 838 | EBCDIC Thai |
20871 | 871 | Country Extended Code Page for Iceland |
20880 | 880 | EBCDIC Cyrillic (DKOI) |
20905 | 905 | EBCDIC Latin-3 (Maltese, Esperanto and Turkish) |
20924 | 924 | EBCDIC Latin-9 (including Euro sign) for Open Systems (POSIX) |
21025 | 1025 | EBCDIC Cyrillic (DKOI) with section sign |
21027 | (1027) | Japanese EBCDIC (an incomplete implementation of IBM code page 1027,[31] now deprecated)[32] |
ID | IBM Equivalent | Description |
---|---|---|
1200 | 1202, 1203 | Unicode (BMP of ISO 10646, UTF-16LE). Available only to managed applications.[32] |
1201 | 1200, 1201 | Unicode (UTF-16BE). Available only to managed applications.[32] |
12000 | 1234, 1235 | UTF-32. Available only to managed applications.[32] |
12001 | 1232, 1233 | UTF-32. Big-endian. Available only to managed applications.[32] |
65000 | — | Unicode (UTF-7) |
65001 | 1208, 1209 | Unicode (UTF-8) |
Macintosh compatibility code pages
[edit]
ID | IBM Equivalent | Description |
---|---|---|
10000 | 1275 | Apple 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 |
10006 | 1280 | Apple Macintosh Greek |
10007 | 1283 | Apple Macintosh Cyrillic |
10008 | — | Apple Macintosh Chinese (simplified) (GB 2312) |
10010 | 1285 | Apple Macintosh Romanian |
10017 | — | Apple Macintosh Ukrainian |
10021 | — | Apple Macintosh Thai |
10029 | 1282 | Apple Macintosh Roman II / Central Europe |
10079 | 1286 | Apple Macintosh Icelandic |
10081 | 1281 | Apple Macintosh Turkish |
10082 | 1284 | Apple Macintosh Croatian |
ISO 8859 code pages
[edit]
ID | IBM Equivalent | Description |
---|---|---|
28591 | 819, 5100 | ISO-8859-1 – Latin-1 |
28592 | 912 | ISO-8859-2 – Latin-2 |
28593 | 913 | ISO-8859-3 – Latin-3 or South European |
28594 | 914 | ISO-8859-4 – Latin-4 or North European |
28595 | 915 | ISO-8859-5 – Latin/Cyrillic |
28596 | — | ISO-8859-6 – Latin/Arabic |
28597 | 813, 4909, 9005 | ISO-8859-7 – Latin/Greek (1987 edition, i.e. without euro sign, drachma sign or iota subscript)[33] |
28598 | — | ISO-8859-8 – Latin/Hebrew (visual order; 1988 edition, i.e. without LRM and RLM)[33] |
28599 | 920 | ISO-8859-9 – Latin-5 or Turkish |
28600 | 919 | ISO-8859-10 – Latin-6 or Nordic |
28601 | — | ISO-8859-11 – Latin/Thai |
28602 | — | ISO-8859-12 – reserved for Latin/Devanagari but abandoned (not supported) |
28603 | 921 | ISO-8859-13 – Latin-7 or Baltic Rim |
28604 | — | ISO-8859-14 – Latin-8 or Celtic |
28605 | 923 | ISO-8859-15 – Latin-9 |
28606 | — | ISO-8859-16 – Latin-10 or South-Eastern European |
38596 | 1089 | ISO-8859-6-I – Latin/Arabic (logical bidirectional order) |
38598 | 916, 5012 | ISO-8859-8-I – Latin/Hebrew (logical bidirectional order; 1988 edition, i.e. without LRM and RLM)[33] |
ID | IBM Equivalent | Description |
---|---|---|
20105 | 1009 | 7-bit IA5 IRV (Western European)[34][35][36] |
20106 | 1011 | 7-bit IA5 German (DIN 66003)[34][35][37] |
20107 | 1018 | 7-bit IA5 Swedish (SEN 850200 C)[34][35][38] |
20108 | 1016 | 7-bit IA5 Norwegian (NS 4551-2)[34][35][39] |
20127 | 367 | 7-bit ASCII[34][35][40] |
20261 | 1036 | T.61 (T.61-8bit) |
20269 | ? | ISO-6937 |
ID | IBM Equivalent | Description |
---|---|---|
20866 | 878 | Russian – KOI8-R |
21866 | 1167, 1168 | Ukrainian – KOI8-U (or KOI8-RU in some versions)[41] |
Problems arising from the use of code pages
[edit]
Microsoft strongly recommends using Unicode in modern applications, but many applications or data files still depend on the legacy code pages.
- Programs need to know what code page to use in order to display the contents of (pre-Unicode) files correctly. If a program uses the wrong code page it may show text as mojibake.
- The code page in use may differ between machines, so (pre-Unicode) files created on one machine may be unreadable on another.
- Data is often improperly tagged with the code page, or not tagged at all, making determination of the correct code page to read the data difficult.
- These Microsoft code pages differ to various degrees from some of the standards and other vendors’ implementations. This isn’t a Microsoft issue per se, as it happens to all vendors, but the lack of consistency makes interoperability with other systems unreliable in some cases.
- The use of code pages limits the set of characters that may be used.
- Characters expressed in an unsupported code page may be converted to question marks (?) or other replacement characters, or to a simpler version (such as removing accents from a letter). In either case, the original character may be lost.
- AppLocale – a utility to run non-Unicode (code page-based) applications in a locale of the user’s choice.
- ^ «Unicode and character sets». Microsoft. 2023-06-13. Retrieved 2024-05-27.
- ^ «Code Pages». 2016-03-07. Archived from the original on 2016-03-07. Retrieved 2021-05-26.
- ^ a b c «Glossary of Terms Used on this Site». December 8, 2018. Archived from the original on 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.
- ^ «Character Sets». www.iana.org. Archived from the original on 2021-05-25. Retrieved 2021-05-26.
- ^ hylom (2017-11-14). «Windows 10のInsider PreviewでシステムロケールをUTF-8にするオプションが追加される» [The option to make UTF-8 the system locale added in Windows 10 Insider Preview]. スラド (in Japanese). Archived from the original on 2018-05-11. Retrieved 2018-05-10.
- ^ «Character Sets». IANA. Archived from the original on 2016-12-03. Retrieved 2019-04-07.
- ^ Microsoft. «Windows 1250». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01250». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ Microsoft. «Windows 1251». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01251». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ Microsoft. «Windows 1252». Archived from the original on 2013-05-04. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01252». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ Microsoft. «Windows 1253». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01253». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ Microsoft. «Windows 1254». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01254». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ Microsoft. «Windows 1255». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01255». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ Microsoft. «Windows 1256». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01256». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ Microsoft. «Windows 1257». Archived from the original on 2013-03-16. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01257». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ Microsoft. «Windows 1258». Archived from the original on 2013-10-25. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document CPGID 01258». Archived from the original on 2014-07-14. Retrieved 2014-07-06.
- ^ IBM. «SBCS code page information document — CPGID 00437». Archived from the original on 2016-06-09. Retrieved 2014-07-04.
- ^ «IBM-943 and IBM-932». IBM Knowledge Center. IBM. Archived from the original on 2018-08-18. Retrieved 2020-07-08.
- ^ «Converter Explorer: ibm-1373_P100-2002». ICU Demonstration. International Components for Unicode. Archived from the original on 2021-05-26. Retrieved 2020-06-27.
- ^ «Coded character set identifiers – CCSID 5471». IBM Globalization. IBM. Archived from the original on 2014-11-29.
- ^ Julliard, Alexandre (11 March 2021). «dump_krwansung_codepage: build Korean Wansung table from the KSX1001 file». make_unicode: Generate code page .c files from ftp.unicode.org descriptions. Wine Project. Archived from the original on 2021-05-26. Retrieved 2021-03-14.
- ^ IBM. «SBCS code page information document — CPGID 00037». Archived from the original on 2014-07-14. Retrieved 2014-07-04.
- ^ Steele, Shawn (2005-09-12). «Code Page 21027 «Extended/Ext Alpha Lowercase»«. MSDN. Archived from the original on 2019-04-06. Retrieved 2019-04-06.
- ^ a b c d e «Code Page Identifiers». docs.microsoft.com. Archived from the original on 2019-04-07. Retrieved 2019-04-07.
- ^ a b c Mozilla Foundation. «Relationship with Windows Code Pages». Crate encoding_rs. Docs.rs.
- ^ a b c d e «Code Page Identifiers». Microsoft Developer Network. Microsoft. 2014. Archived from the original on 2016-06-19. Retrieved 2016-06-19.
- ^ a b c d e «Web Encodings — Internet Explorer — Encodings». WHATWG Wiki. 2012-10-23. Archived from the original on 2016-06-20. Retrieved 2016-06-20.
- ^ Foller, Antonin (2014) [2011]. «Western European (IA5) encoding — Windows charsets». WUtils.com — Online web utility and help. Motobit Software. Archived from the original on 2016-06-20. Retrieved 2016-06-20.
- ^ Foller, Antonin (2014) [2011]. «German (IA5) encoding – Windows charsets». WUtils.com – Online web utility and help. Motobit Software. Archived from the original on 2016-06-20. Retrieved 2016-06-20.
- ^ Foller, Antonin (2014) [2011]. «Swedish (IA5) encoding — Windows charsets». WUtils.com — Online web utility and help. Motobit Software. Archived from the original on 2016-06-20. Retrieved 2016-06-20.
- ^ Foller, Antonin (2014) [2011]. «Norwegian (IA5) encoding — Windows charsets». WUtils.com — Online web utility and help. Motobit Software. Archived from the original on 2016-06-20. Retrieved 2016-06-20.
- ^ Foller, Antonin (2014) [2011]. «US-ASCII encoding — Windows charsets». WUtils.com — Online web utility and help. Motobit Software. Archived from the original on 2016-06-20. Retrieved 2016-06-20.
- ^ Nechayev, Valentin (2013) [2001]. «Review of 8-bit Cyrillic encodings universe». Archived from the original on 2016-12-05. Retrieved 2016-12-05.
- National Language Support (NLS) API Reference. Table showing ANSI and OEM codepages per language (from web-archive since Microsoft removed the original page)
- IANA Charset Name Registrations
- Unicode mapping table for Windows code pages
- Unicode mappings of windows code pages with «best fit»
Reference of Extended ASCII Table for Windows-1251
The ASCII table, when defined according to the Windows-1251 character encoding (also known as Code page 1251), includes ASCII control characters and ASCII printable characters. Moreover, it also includes the extended ASCII character set unique to Windows-1251. This character set is particularly designed to support Cyrillic languages.
ASCII control characters (character code 0-31)
The first 32 characters in the ASCII-table are unprintable control codes and are used to control peripherals such as printers.
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description | |
---|---|---|---|---|---|---|---|---|
0 | 000 | 00 | 00000000 | ␀ | � | Null character | ||
1 | 001 | 01 | 00000001 | ␁ |  | Start of Heading | ||
2 | 002 | 02 | 00000010 | ␂ |  | Start of Text | ||
3 | 003 | 03 | 00000011 | ␃ |  | End of Text | ||
4 | 004 | 04 | 00000100 | ␄ |  | End of Transmission | ||
5 | 005 | 05 | 00000101 | ␅ |  | Enquiry | ||
6 | 006 | 06 | 00000110 | ␆ |  | Acknowledge | ||
7 | 007 | 07 | 00000111 | ␇ |  | Bell, Alert | ||
8 | 010 | 08 | 00001000 | ␈ |  | Backspace | ||
9 | 011 | 09 | 00001001 | ␉ | 	 | Horizontal Tab | ||
10 | 012 | 0A | 00001010 | ␊ | | Line Feed | ||
11 | 013 | 0B | 00001011 | ␋ |  | Vertical Tabulation | ||
12 | 014 | 0C | 00001100 | ␌ |  | Form Feed | ||
13 | 015 | 0D | 00001101 | ␍ | | Carriage Return | ||
14 | 016 | 0E | 00001110 | ␎ |  | Shift Out | ||
15 | 017 | 0F | 00001111 | ␏ |  | Shift In | ||
16 | 020 | 10 | 00010000 | ␐ |  | Data Link Escape | ||
17 | 021 | 11 | 00010001 | ␑ |  | Device Control One (XON) | ||
18 | 022 | 12 | 00010010 | ␒ |  | Device Control Two | ||
19 | 023 | 13 | 00010011 | ␓ |  | Device Control Three (XOFF) | ||
20 | 024 | 14 | 00010100 | ␔ |  | Device Control Four | ||
21 | 025 | 15 | 00010101 | ␕ |  | Negative Acknowledge | ||
22 | 026 | 16 | 00010110 | ␖ |  | Synchronous Idle | ||
23 | 027 | 17 | 00010111 | ␗ |  | End of Transmission Block | ||
24 | 030 | 18 | 00011000 | ␘ |  | Cancel | ||
25 | 031 | 19 | 00011001 | ␙ |  | End of medium | ||
26 | 032 | 1A | 00011010 | ␚ |  | Substitute | ||
27 | 033 | 1B | 00011011 | ␛ |  | Escape | ||
28 | 034 | 1C | 00011100 | ␜ |  | File Separator | ||
29 | 035 | 1D | 00011101 | ␝ |  | Group Separator | ||
30 | 036 | 1E | 00011110 | ␞ |  | Record Separator | ||
31 | 037 | 1F | 00011111 | ␟ |  | Unit Separator |
ASCII printable characters (character code 32-127)
Codes 32-127 are common for all the different variations of the ASCII table, they are called printable characters, represent letters, digits, punctuation marks, and a few miscellaneous symbols. You will find almost every character on your keyboard. Character 127 represents the command DEL.
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description | |
---|---|---|---|---|---|---|---|---|
32 | 040 | 20 | 00100000 | ␠ |   | Space | ||
33 | 041 | 21 | 00100001 | ! | ! | ! | Exclamation mark | |
34 | 042 | 22 | 00100010 | « | " | " | Double quotes (or speech marks) | |
35 | 043 | 23 | 00100011 | # | # | # | Number sign | |
36 | 044 | 24 | 00100100 | $ | $ | $ | Dollar | |
37 | 045 | 25 | 00100101 | % | % | % | Per cent sign | |
38 | 046 | 26 | 00100110 | & | & | & | Ampersand | |
39 | 047 | 27 | 00100111 | ‘ | ' | ' | Single quote | |
40 | 050 | 28 | 00101000 | ( | ( | &lparen; | Open parenthesis (or open bracket) | |
41 | 051 | 29 | 00101001 | ) | ) | &rparen; | Close parenthesis (or close bracket) | |
42 | 052 | 2A | 00101010 | * | * | * | Asterisk | |
43 | 053 | 2B | 00101011 | + | + | + | Plus | |
44 | 054 | 2C | 00101100 | , | , | , | Comma | |
45 | 055 | 2D | 00101101 | — | - | Hyphen-minus | ||
46 | 056 | 2E | 00101110 | . | . | . | Period, dot or full stop | |
47 | 057 | 2F | 00101111 | / | / | / | Slash or divide | |
48 | 060 | 30 | 00110000 | 0 | 0 | Zero | ||
49 | 061 | 31 | 00110001 | 1 | 1 | One | ||
50 | 062 | 32 | 00110010 | 2 | 2 | Two | ||
51 | 063 | 33 | 00110011 | 3 | 3 | Three | ||
52 | 064 | 34 | 00110100 | 4 | 4 | Four | ||
53 | 065 | 35 | 00110101 | 5 | 5 | Five | ||
54 | 066 | 36 | 00110110 | 6 | 6 | Six | ||
55 | 067 | 37 | 00110111 | 7 | 7 | Seven | ||
56 | 070 | 38 | 00111000 | 8 | 8 | Eight | ||
57 | 071 | 39 | 00111001 | 9 | 9 | Nine | ||
58 | 072 | 3A | 00111010 | : | : | : | Colon | |
59 | 073 | 3B | 00111011 | ; | ; | ; | Semicolon | |
60 | 074 | 3C | 00111100 | < | < | < | Less than (or open angled bracket) | |
61 | 075 | 3D | 00111101 | = | = | = | Equals | |
62 | 076 | 3E | 00111110 | > | > | > | Greater than (or close angled bracket) | |
63 | 077 | 3F | 00111111 | ? | ? | ? | Question mark | |
64 | 100 | 40 | 01000000 | @ | @ | @ | At sign | |
65 | 101 | 41 | 01000001 | A | A | Uppercase A | ||
66 | 102 | 42 | 01000010 | B | B | Uppercase B | ||
67 | 103 | 43 | 01000011 | C | C | Uppercase C | ||
68 | 104 | 44 | 01000100 | D | D | Uppercase D | ||
69 | 105 | 45 | 01000101 | E | E | Uppercase E | ||
70 | 106 | 46 | 01000110 | F | F | Uppercase F | ||
71 | 107 | 47 | 01000111 | G | G | Uppercase G | ||
72 | 110 | 48 | 01001000 | H | H | Uppercase H | ||
73 | 111 | 49 | 01001001 | I | I | Uppercase I | ||
74 | 112 | 4A | 01001010 | J | J | Uppercase J | ||
75 | 113 | 4B | 01001011 | K | K | Uppercase K | ||
76 | 114 | 4C | 01001100 | L | L | Uppercase L | ||
77 | 115 | 4D | 01001101 | M | M | Uppercase M | ||
78 | 116 | 4E | 01001110 | N | N | Uppercase N | ||
79 | 117 | 4F | 01001111 | O | O | Uppercase O | ||
80 | 120 | 50 | 01010000 | P | P | Uppercase P | ||
81 | 121 | 51 | 01010001 | Q | Q | Uppercase Q | ||
82 | 122 | 52 | 01010010 | R | R | Uppercase R | ||
83 | 123 | 53 | 01010011 | S | S | Uppercase S | ||
84 | 124 | 54 | 01010100 | T | T | Uppercase T | ||
85 | 125 | 55 | 01010101 | U | U | Uppercase U | ||
86 | 126 | 56 | 01010110 | V | V | Uppercase V | ||
87 | 127 | 57 | 01010111 | W | W | Uppercase W | ||
88 | 130 | 58 | 01011000 | X | X | Uppercase X | ||
89 | 131 | 59 | 01011001 | Y | Y | Uppercase Y | ||
90 | 132 | 5A | 01011010 | Z | Z | Uppercase Z | ||
91 | 133 | 5B | 01011011 | [ | [ | [ | Opening bracket | |
92 | 134 | 5C | 01011100 | \ | \ | \ | Backslash | |
93 | 135 | 5D | 01011101 | ] | ] | ] | Closing bracket | |
94 | 136 | 5E | 01011110 | ^ | ^ | ^ | Caret — circumflex | |
95 | 137 | 5F | 01011111 | _ | _ | _ | Underscore | |
96 | 140 | 60 | 01100000 | ` | ` | ` | Grave accent | |
97 | 141 | 61 | 01100001 | a | a | Lowercase a | ||
98 | 142 | 62 | 01100010 | b | b | Lowercase b | ||
99 | 143 | 63 | 01100011 | c | c | Lowercase c | ||
100 | 144 | 64 | 01100100 | d | d | Lowercase d | ||
101 | 145 | 65 | 01100101 | e | e | Lowercase e | ||
102 | 146 | 66 | 01100110 | f | f | Lowercase f | ||
103 | 147 | 67 | 01100111 | g | g | Lowercase g | ||
104 | 150 | 68 | 01101000 | h | h | Lowercase h | ||
105 | 151 | 69 | 01101001 | i | i | Lowercase i | ||
106 | 152 | 6A | 01101010 | j | j | Lowercase j | ||
107 | 153 | 6B | 01101011 | k | k | Lowercase k | ||
108 | 154 | 6C | 01101100 | l | l | Lowercase l | ||
109 | 155 | 6D | 01101101 | m | m | Lowercase m | ||
110 | 156 | 6E | 01101110 | n | n | Lowercase n | ||
111 | 157 | 6F | 01101111 | o | o | Lowercase o | ||
112 | 160 | 70 | 01110000 | p | p | Lowercase p | ||
113 | 161 | 71 | 01110001 | q | q | Lowercase q | ||
114 | 162 | 72 | 01110010 | r | r | Lowercase r | ||
115 | 163 | 73 | 01110011 | s | s | Lowercase s | ||
116 | 164 | 74 | 01110100 | t | t | Lowercase t | ||
117 | 165 | 75 | 01110101 | u | u | Lowercase u | ||
118 | 166 | 76 | 01110110 | v | v | Lowercase v | ||
119 | 167 | 77 | 01110111 | w | w | Lowercase w | ||
120 | 170 | 78 | 01111000 | x | x | Lowercase x | ||
121 | 171 | 79 | 01111001 | y | y | Lowercase y | ||
122 | 172 | 7A | 01111010 | z | z | Lowercase z | ||
123 | 173 | 7B | 01111011 | { | { | { | Opening brace | |
124 | 174 | 7C | 01111100 | | | | | | | Vertical bar | |
125 | 175 | 7D | 01111101 | } | } | } | Closing brace | |
126 | 176 | 7E | 01111110 | ~ | ~ | ˜ | Equivalency sign — tilde | |
127 | 177 | 7F | 01111111 | ␡ |  | Delete |
The extended ASCII codes (character code 128-255)
Windows-1251 is a character encoding standard used to represent text in the Cyrillic script. It was introduced by Microsoft in the Windows operating system and is based on ISO 8859-5. Windows-1251 supports a range of characters and symbols used in the Cyrillic script, including Russian, Bulgarian, Serbian, and others.
Windows-1251 is widely used in the former Soviet Union countries and other countries that use the Cyrillic script. It is commonly used in word processing software, spreadsheets, and databases. However, it is important to note that Windows-1251 may not provide full support for all of the characters used in these languages and may cause issues when dealing with text in certain scripts.
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description | |
---|---|---|---|---|---|---|---|---|
128 | 200 | 80 | 10000000 | Ђ | Ђ | Ђ | Cyrillic capital letter Dje | |
129 | 201 | 81 | 10000001 | Ѓ | Ѓ | Ѓ | Cyrillic capital letter Gje | |
130 | 202 | 82 | 10000010 | ‚ | ‚ | ‚ | Single low-9 quotation mark | |
131 | 203 | 83 | 10000011 | ѓ | ѓ | ѓ | Cyrillic small letter gje | |
132 | 204 | 84 | 10000100 | „ | „ | „ | Double low-9 quotation mark | |
133 | 205 | 85 | 10000101 | … | … | … | Horizontal ellipsis | |
134 | 206 | 86 | 10000110 | † | † | † | Dagger | |
135 | 207 | 87 | 10000111 | ‡ | ‡ | ‡ | Double dagger | |
136 | 210 | 88 | 10001000 | € | € | € | Euro sign | |
137 | 211 | 89 | 10001001 | ‰ | ‰ | ‰ | Per mille sign | |
138 | 212 | 8A | 10001010 | Љ | Љ | Љ | Cyrillic capital letter Lje | |
139 | 213 | 8B | 10001011 | ‹ | ‹ | ‹ | Single left-pointing angle quotation | |
140 | 214 | 8C | 10001100 | Њ | Њ | Њ | Cyrillic capital letter Nje | |
141 | 215 | 8D | 10001101 | Ќ | Ќ | Ќ | Cyrillic capital letter Kje | |
142 | 216 | 8E | 10001110 | Ћ | Ћ | Ћ | Cyrillic capital letter Tshe | |
143 | 217 | 8F | 10001111 | Џ | Џ | Џ | Cyrillic capital letter Dzhe | |
144 | 220 | 90 | 10010000 | ђ | ђ | ђ | Cyrillic small letter dje | |
145 | 221 | 91 | 10010001 | ‘ | ‘ | ‘ | Left single quotation mark | |
146 | 222 | 92 | 10010010 | ’ | ’ | ’ | Right single quotation mark | |
147 | 223 | 93 | 10010011 | “ | “ | “ | Left double quotation mark | |
148 | 224 | 94 | 10010100 | ” | ” | ” | Right double quotation mark | |
149 | 225 | 95 | 10010101 | • | • | • | Bullet | |
150 | 226 | 96 | 10010110 | – | – | – | En dash | |
151 | 227 | 97 | 10010111 | — | — | — | Em dash | |
152 | 230 | 98 | 10011000 | Unused | ||||
153 | 231 | 99 | 10011001 | ™ | ™ | ™ | Trade mark sign | |
154 | 232 | 9A | 10011010 | љ | љ | љ | Cyrillic small letter lje | |
155 | 233 | 9B | 10011011 | › | › | › | Single right-pointing angle quotation mark | |
156 | 234 | 9C | 10011100 | њ | њ | њ | Cyrillic small letter nje | |
157 | 235 | 9D | 10011101 | ќ | ќ | ќ | Cyrillic small letter Kje | |
158 | 236 | 9E | 10011110 | ћ | ћ | ћ | Cyrillic small letter Tshe | |
159 | 237 | 9F | 10011111 | џ | џ | џ | Cyrillic small letter Dzhe | |
160 | 240 | A0 | 10100000 |   | | Non-breaking space | ||
161 | 241 | A1 | 10100001 | Ў | Ў | Ў | Cyrillic capital letter short U | |
162 | 242 | A2 | 10100010 | ў | ў | ў | Cyrillic small letter short u | |
163 | 243 | A3 | 10100011 | Ј | Ј | Ј | Cyrillic capital letter Je | |
164 | 244 | A4 | 10100100 | ¤ | ¤ | ¤ | Currency sign | |
165 | 245 | A5 | 10100101 | Ґ | Ґ | Cyrillic capital letter Ghe with upturn | ||
166 | 246 | A6 | 10100110 | ¦ | ¦ | ¦ | Pipe, broken vertical bar | |
167 | 247 | A7 | 10100111 | § | § | § | Section sign | |
168 | 250 | A8 | 10101000 | Ё | Ё | Ё | Cyrillic capital letter Io | |
169 | 251 | A9 | 10101001 | © | © | © | Copyright sign | |
170 | 252 | AA | 10101010 | Є | Є | Є | Cyrillic capital letter Ukrainian Ie | |
171 | 253 | AB | 10101011 | « | « | « | Left double angle quotes | |
172 | 254 | AC | 10101100 | ¬ | ¬ | ¬ | Negation | |
173 | 255 | AD | 10101101 | | ­ | ­ | Soft hyphen | |
174 | 256 | AE | 10101110 | ® | ® | ® | Registered trade mark sign | |
175 | 257 | AF | 10101111 | Ї | Ї | Ї | Cyrillic capital letter Yi | |
176 | 260 | B0 | 10110000 | ° | ° | ° | Degree sign | |
177 | 261 | B1 | 10110001 | ± | ± | ± | Plus-or-minus sign | |
178 | 262 | B2 | 10110010 | І | І | І | Cyrillic capital letter Byelorussian-Ukrainian I | |
179 | 263 | B3 | 10110011 | і | і | і | Cyrillic small letter Byelorussian-Ukrainian i | |
180 | 264 | B4 | 10110100 | ґ | ґ | Cyrillic small letter ghe with upturn | ||
181 | 265 | B5 | 10110101 | µ | µ | µ | Micro sign | |
182 | 266 | B6 | 10110110 | ¶ | ¶ | ¶ | Pilcrow sign — paragraph sign | |
183 | 267 | B7 | 10110111 | · | · | · | Middle dot — Georgian comma | |
184 | 270 | B8 | 10111000 | ё | ё | ё | Cyrillic small letter io | |
185 | 271 | B9 | 10111001 | № | № | № | Numero Sign | |
186 | 272 | BA | 10111010 | є | є | є | Cyrillic small letter Ukrainian ie | |
187 | 273 | BB | 10111011 | » | » | » | Right double angle quotes | |
188 | 274 | BC | 10111100 | ј | ј | ј | Cyrillic small letter je | |
189 | 275 | BD | 10111101 | Ѕ | Ѕ | Ѕ | Cyrillic capital letter Dze | |
190 | 276 | BE | 10111110 | ѕ | ѕ | ѕ | Cyrillic small letter dze | |
191 | 277 | BF | 10111111 | ї | ї | ї | Cyrillic small letter yi | |
192 | 300 | C0 | 11000000 | А | А | А | Cyrillic capital letter A | |
193 | 301 | C1 | 11000001 | Б | Б | Б | Cyrillic capital letter Be | |
194 | 302 | C2 | 11000010 | В | В | В | Cyrillic capital letter Ve | |
195 | 303 | C3 | 11000011 | Г | Г | Г | Cyrillic capital letter Ghe | |
196 | 304 | C4 | 11000100 | Д | Д | Д | Cyrillic capital letter De | |
197 | 305 | C5 | 11000101 | Е | Е | Е | Cyrillic capital letter Ie | |
198 | 306 | C6 | 11000110 | Ж | Ж | Ж | Cyrillic capital letter Zhe | |
199 | 307 | C7 | 11000111 | З | З | З | Cyrillic capital letter Ze | |
200 | 310 | C8 | 11001000 | И | И | И | Cyrillic capital letter I | |
201 | 311 | C9 | 11001001 | Й | Й | Й | Cyrillic capital letter Short I | |
202 | 312 | CA | 11001010 | К | К | К | Cyrillic capital letter Ka | |
203 | 313 | CB | 11001011 | Л | Л | Л | Cyrillic capital letter El | |
204 | 314 | CC | 11001100 | М | М | М | Cyrillic capital letter Em | |
205 | 315 | CD | 11001101 | Н | Н | Н | Cyrillic capital letter En | |
206 | 316 | CE | 11001110 | О | О | О | Cyrillic capital letter O | |
207 | 317 | CF | 11001111 | П | П | П | Cyrillic capital letter Pe | |
208 | 320 | D0 | 11010000 | Р | Р | Р | Cyrillic capital letter Er | |
209 | 321 | D1 | 11010001 | С | С | С | Cyrillic capital letter Es | |
210 | 322 | D2 | 11010010 | Т | Т | Т | Cyrillic capital letter Te | |
211 | 323 | D3 | 11010011 | У | У | У | Cyrillic capital letter U | |
212 | 324 | D4 | 11010100 | Ф | Ф | Ф | Cyrillic capital letter Ef | |
213 | 325 | D5 | 11010101 | Х | Х | Х | Cyrillic capital letter Ha | |
214 | 326 | D6 | 11010110 | Ц | Ц | Ц | Cyrillic capital letter Tse | |
215 | 327 | D7 | 11010111 | Ч | Ч | Ч | Cyrillic capital letter Che | |
216 | 330 | D8 | 11011000 | Ш | Ш | Ш | Cyrillic capital letter Sha | |
217 | 331 | D9 | 11011001 | Щ | Щ | Щ | Cyrillic capital letter Shcha | |
218 | 332 | DA | 11011010 | Ъ | Ъ | Ъ | Cyrillic capital letter Hard Sign | |
219 | 333 | DB | 11011011 | Ы | Ы | Ы | Cyrillic capital letter Yeru | |
220 | 334 | DC | 11011100 | Ь | Ь | Ь | Cyrillic capital letter Soft Sign | |
221 | 335 | DD | 11011101 | Э | Э | Э | Cyrillic capital letter E | |
222 | 336 | DE | 11011110 | Ю | Ю | Ю | Cyrillic capital letter Yu | |
223 | 337 | DF | 11011111 | Я | Я | Я | Cyrillic capital letter Ya | |
224 | 340 | E0 | 11100000 | а | а | а | Cyrillic Small Letter A | |
225 | 341 | E1 | 11100001 | б | б | б | Cyrillic small letter be | |
226 | 342 | E2 | 11100010 | в | в | в | Cyrillic small letter ve | |
227 | 343 | E3 | 11100011 | г | г | г | Cyrillic small letter ghe | |
228 | 344 | E4 | 11100100 | д | д | д | Cyrillic small letter de | |
229 | 345 | E5 | 11100101 | е | е | е | Cyrillic small letter ie | |
230 | 346 | E6 | 11100110 | ж | ж | ж | Cyrillic small letter zhe | |
231 | 347 | E7 | 11100111 | з | з | з | Cyrillic small letter ze | |
232 | 350 | E8 | 11101000 | и | и | и | Cyrillic small letter i | |
233 | 351 | E9 | 11101001 | й | й | й | Cyrillic small letter short i | |
234 | 352 | EA | 11101010 | к | к | к | Cyrillic small letter ka | |
235 | 353 | EB | 11101011 | л | л | л | Cyrillic small letter el | |
236 | 354 | EC | 11101100 | м | м | м | Cyrillic small letter em | |
237 | 355 | ED | 11101101 | н | н | н | Cyrillic small letter en | |
238 | 356 | EE | 11101110 | о | о | о | Cyrillic small letter o | |
239 | 357 | EF | 11101111 | п | п | п | Cyrillic small letter pe | |
240 | 360 | F0 | 11110000 | р | р | р | Cyrillic small letter er | |
241 | 361 | F1 | 11110001 | с | с | с | Cyrillic small letter es | |
242 | 362 | F2 | 11110010 | т | т | т | Cyrillic small letter te | |
243 | 363 | F3 | 11110011 | у | у | у | Cyrillic small letter u | |
244 | 364 | F4 | 11110100 | ф | ф | ф | Cyrillic small letter ef | |
245 | 365 | F5 | 11110101 | х | х | х | Cyrillic small letter ha | |
246 | 366 | F6 | 11110110 | ц | ц | ц | Cyrillic small letter tse | |
247 | 367 | F7 | 11110111 | ч | ч | ч | Cyrillic small letter che | |
248 | 370 | F8 | 11111000 | ш | ш | ш | Cyrillic small letter sha | |
249 | 371 | F9 | 11111001 | щ | щ | щ | Cyrillic small letter shcha | |
250 | 372 | FA | 11111010 | ъ | ъ | ъ | Cyrillic small letter hard sign | |
251 | 373 | FB | 11111011 | ы | ы | ы | Cyrillic small letter yeru | |
252 | 374 | FC | 11111100 | ь | ь | ь | Cyrillic small letter soft sign | |
253 | 375 | FD | 11111101 | э | э | э | Cyrillic small letter e | |
254 | 376 | FE | 11111110 | ю | ю | ю | Cyrillic small letter yu | |
255 | 377 | FF | 11111111 | я | я | я | Cyrillic small letter ya |
Материал из РУВИКИ — свободной энциклопедии
Windows-1251 | |
---|---|
Описывается по ссылке |
iana.org/assignments/cha… msdn.microsoft.com/en-us… microsoft.com/typography… unicode.org/Public/MAPPI… unicode.org/Public/MAPPI… ibm.com/docs/en/db2/11.5… |
Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для русских версий Microsoft Windows до 10-й версии. В прошлом пользовалась довольно большой популярностью. Была создана на базе кодировок, использовавшихся в ранних «самопальных» русификаторах Windows в 1990—1991 гг. совместно представителями «Параграфа», «Диалога» и российского отделения Microsoft. Первоначальный вариант кодировки сильно отличался от представленного ниже в таблице (в частности, там было значительное число «белых пятен»). Но, однако был вариативным и представленным в 6 формах применения.
В современных приложениях отдаётся предпочтение Юникоду (UTF-8). На 1 апреля 2019 лишь на 1 % всех веб-страниц используется Windows-1251.[1]
Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO 8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только значок ударения); она также содержит все символы для других славянских языков: украинского, белорусского, сербского, македонского и болгарского.
Windows-1251 имеет два недостатка:
- строчная буква «я» имеет код 0xFF (255 в десятичной системе). Она является «виновницей» ряда неожиданных проблем в программах без поддержки чистого 8-го бита, а также (гораздо более частый случай) использующих этот код как служебный (в CP437 он обозначает «неразрывный пробел», в Windows-1252 — ÿ, оба варианта практически не используются; число же
-1
, в дополнительном коде длиной 8 бит представляющееся числом255
, часто используется в программировании как специальное значение). Тот же недостаток имеет и KOI8-R, но в ней 0xFF есть заглавный твёрдый знак, который применяется редко (только при написании одними лишь заглавными буквами). - отсутствуют символы псевдографики, имеющиеся в CP866 и KOI8 (хотя для самих Windows, для которых она предназначена, в них не было нужды, это делало несовместимость двух использовавшихся в них кодировок заметнее).
Также как недостаток может рассматриваться отдельное расположение буквы «ё», тогда как остальные символы расположены строго в алфавитном порядке. Это усложняет программы лексикографического упорядочения.
Синонимы: CP1251; ANSI (только в русскоязычной ОС Windows).
Первая половина таблицы кодировки (коды от 0x00 до 0x7F) полностью соответствует кодировке ASCII. Числа под буквами обозначают шестнадцатеричный код подходящего символа в Юникоде.
Кодировка Windows-1251[править | править код]
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8. |
Ђ 402 |
Ѓ 403 |
‚ 201A |
ѓ 453 |
„ 201E |
… 2026 |
† 2020 |
‡ 2021 |
€ 20AC |
‰ 2030 |
Љ 409 |
‹ 2039 |
Њ 40A |
Ќ 40C |
Ћ 40B |
Џ 40F |
9. |
ђ 452 |
‘ 2018 |
’ 2019 |
“ 201C |
” 201D |
• 2022 |
– 2013 |
— 2014 |
™ 2122 |
љ 459 |
› 203A |
њ 45A |
ќ 45C |
ћ 45B |
џ 45F |
|
A. |
A0 |
Ў 40E |
ў 45E |
Ј 408 |
¤ A4 |
Ґ 490 |
¦ A6 |
§ A7 |
Ё 401 |
© A9 |
Є 404 |
« AB |
¬ AC |
AD |
® AE |
Ї 407 |
B. |
° B0 |
± B1 |
І 406 |
і 456 |
ґ 491 |
µ B5 |
¶ B6 |
· B7 |
ё 451 |
№ 2116 |
є 454 |
» BB |
ј 458 |
Ѕ 405 |
ѕ 455 |
ї 457 |
C. |
А 410 |
Б 411 |
В 412 |
Г 413 |
Д 414 |
Е 415 |
Ж 416 |
З 417 |
И 418 |
Й 419 |
К 41A |
Л 41B |
М 41C |
Н 41D |
О 41E |
П 41F |
D. |
Р 420 |
С 421 |
Т 422 |
У 423 |
Ф 424 |
Х 425 |
Ц 426 |
Ч 427 |
Ш 428 |
Щ 429 |
Ъ 42A |
Ы 42B |
Ь 42C |
Э 42D |
Ю 42E |
Я 42F |
E. |
а 430 |
б 431 |
в 432 |
г 433 |
д 434 |
е 435 |
ж 436 |
з 437 |
и 438 |
й 439 |
к 43A |
л 43B |
м 43C |
н 43D |
о 43E |
п 43F |
F. |
р 440 |
с 441 |
т 442 |
у 443 |
ф 444 |
х 445 |
ц 446 |
ч 447 |
ш 448 |
щ 449 |
ъ 44A |
ы 44B |
ь 44C |
э 44D |
ю 44E |
я 44F |
-
Таблица основного кода ASCII
-
Таблица расширенного кода ASCII
Другие варианты[править | править код]
(Показаны только отличающиеся строки, поскольку всё остальное совпадает)
Официальная кодировка Amiga-1251 (Amiga Inc., 2004 г.)[править | править код]
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A. |
A0 |
¡ A1 |
¢ A2 |
£ A3 |
€ 20AC |
¥ A5 |
¦ A6 |
§ A7 |
Ё 401 |
© A9 |
№ 2116 |
« AB |
¬ AC |
AD |
® AE |
¯ AF |
B. |
° B0 |
± B1 |
² B2 |
³ B3 |
´ B4 |
µ B5 |
¶ B6 |
· B7 |
ё 451 |
¹ B9 |
º BA |
» BB |
¼ BC |
½ BD |
¾ BE |
¿ BF |
Официальная кодировка KZ-1048 (казахский стандарт)[править | править код]
Данная кодировка утверждена стандартом СТ РК 1048—2002 и зарегистрирована в IANA как KZ-1048 [1].
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8. |
Ђ 402 |
Ѓ 403 |
‚ 201A |
ѓ 453 |
„ 201E |
… 2026 |
† 2020 |
‡ 2021 |
€ 20AC |
‰ 2030 |
Љ 409 |
‹ 2039 |
Њ 40A |
Қ 49A |
Һ 4BA |
Џ 40F |
9. |
ђ 452 |
‘ 2018 |
’ 2019 |
“ 201C |
” 201D |
• 2022 |
– 2013 |
— 2014 |
™ 2122 |
љ 459 |
› 203A |
њ 45A |
қ 49B |
һ 4BB |
џ 45F |
|
A. |
A0 |
Ұ 4B0 |
ұ 4B1 |
Ә 4D8 |
¤ A4 |
Ө 4E8 |
¦ A6 |
§ A7 |
Ё 401 |
© A9 |
Ғ 492 |
« AB |
¬ AC |
AD |
® AE |
Ү 4AE |
B. |
° B0 |
± B1 |
І 406 |
і 456 |
ө 4E9 |
µ B5 |
¶ B6 |
· B7 |
ё 451 |
№ 2116 |
ғ 493 |
» BB |
ә 4D9 |
Ң 4A2 |
ң 4A3 |
ү 4AF |
Кодировка Windows-1251 (чувашский вариант)[править | править код]
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8. |
Ђ 402 |
Ѓ 403 |
‚ 201A |
ѓ 453 |
„ 201E |
… 2026 |
† 2020 |
‡ 2021 |
€ 20AC |
‰ 2030 |
Љ 409 |
‹ 2039 |
Ӑ 4D0 |
Ӗ 4D6 |
Ҫ 4AA |
Ӳ 4F2 |
9. |
ђ 452 |
‘ 2018 |
’ 2019 |
“ 201C |
” 201D |
• 2022 |
– 2013 |
— 2014 |
™ 2122 |
љ 459 |
› 203A |
ӑ 4D1 |
ӗ 4D7 |
ҫ 4AB |
ӳ 4F3 |
Татарский вариант[править | править код]
Эта кодировка была официально принята в Татарстане в 1996 г.
.0 | .1 | .2 | .3 | .4 | .5 | .6 | .7 | .8 | .9 | .A | .B | .C | .D | .E | .F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
8. |
Ә 4D8 |
Ѓ 403 |
‚ 201A |
ѓ 453 |
„ 201E |
… 2026 |
† 2020 |
‡ 2021 |
€ 20AC |
‰ 2030 |
Ө 4E8 |
‹ 2039 |
Ү 4AE |
Җ 496 |
Ң 4A2 |
Һ 4BA |
9. |
ә 4D9 |
‘ 2018 |
’ 2019 |
“ 201C |
” 201D |
• 2022 |
– 2013 |
— 2014 |
™ 2122 |
ө 4E9 |
› 203A |
ү 4AF |
җ 497 |
ң 4A3 |
һ 4BB |
- ↑ Historical trends in the usage of character encodings, April 2019. Дата обращения: 11 февраля 2016. Архивировано 3 марта 2021 года.
- История создании кодировки в сообщении Игоря Семенюка в эхоконференции SU.LAN от 14 января 1996
Вряд ли это сейчас сильно актуально, но может кому-то покажется интересным (или просто вспомнит былые годы).
Начну с небольшого экскурса в историю компьютера. Поскольку компьютер использовался для обработки информации, то он просто обязан представлять эту информацию в «человеческом» виде. Компьютер хранит информацию в виде чисел (байтов), а человек воспринимает символы (буквы, цифры, различные знаки). Значит, надо сделать сопоставление число <-> символ и задача будет решена. Сначала посчитаем, сколько символов нам надо (не забудем, что «мы» — американцы, использующие латинский алфавит). Нам надо 10 цифр + 26 заглавных букв английского алфавита + 26 строчных букв + математические знаки (хотя бы +-/*=><%) + знаки препинания (.,!?:;’” ) + различные скобки + служебные символы (_^%$@|) + 32 непечатных управляющих символов для работы с устройствами (в первую очередь, с телетайпом). В общем, 128 символов хватает «впритык» и этот стандартный набор символов «мы» назвали ASCII, т.е. «American Standard Code for Information Interchange»
Отлично, для 128 символов достаточно 7 бит. С другой стороны, в байте 8 бит и каналы связи 8-битные (забудем про «доисторические» времена, когда в байте и каналах бит было меньше). По 8-ми битному каналу будем передавать 7 бит кода символа и 1 бит контрольный (для повышения надежности и распознавания ошибок). И все было замечательно, пока компьютеры не стали использоваться в других странах (где латиница содержит больше 26 символов или вообще используется не латинский алфавит). Вместо того, чтобы всем поголовно освоить английский, жители СССР, Франции, Германии, Грузии и десятков других стран захотели, чтобы компьютер общался с ними на их родном языке. Пути были разные (в зависимости от остроты проблемы): одно дело, если к 26 символам латиницы надо добавить 2-3 национальных символа (можно пожертвовать какими-то специальными) и другое дело, когда надо «вклинить» кириллицу. Теперь «мы» — русские, стремящиеся «русифицировать» технику. Первыми были решения на основе замены строчных английских букв прописными русскими. Однако проблема в том, что русских букв (33) и они не влезают на 26 мест. Надо «уплотнить» и первой жертвой этого уплотнения пала буква Ё (еe просто повсеместно заменили на Е). Другой прием – вместо «русских» A,E,K,M,H,O,P,C,T стали использовать похожие английские (таких букв даже больше чем надо, но в некоторых парах прописные похожие, а строчные — не очень: Hh Tt Bb Kk Mm). Но все же «вклинили » и в результате весь вывод шел ПРОПИСНЫМИ БУКВАМИ, что неудобно и некрасиво, однако со временем привыкли. Второй прием – «переключение языка». Код русского символа совпадал с кодом английского символа, но устройство помнило, что сейчас оно в русском режиме и выводило символ кириллицы (а в английском режиме – латиницы). Режим переключался двумя служебными символами: Shift Out (SO, код 14) на русский и Shift IN (SI, код 15) на английский (интересно, что когда-то в печатных машинках использовалась двухцветная лента и SO приводил к физическому подъему ленты и в результате печать шла красным, а SI ставил ленту на место и печать снова шла черным). Текст с большими и маленькими буквами стал выглядеть вполне прилично. Все эти варианты более-менее работали на больших компьютерах, но после выпуска IBM PC началось массовое распространение персональных компьютеров по всему миру и надо было что-то решать централизовано.
Решением стала разработанная фирмой IBM технология кодовых страниц. К этому времени «контрольный символ» при передаче потерял свою актуальность и все 8-бит можно было использовать для кода символа. Вместо диапазона кодов 0-127 стал доступен диапазон 0-255. Кодовая страница (или кодировка)– это сопоставление кода из диапазона 0-255 некоему графическому образу (например, букве «Я» кириллицы или букве «омега» греческого). Нельзя сказать «символ с кодом 211 выглядит так», но можно сказать «символ с кодом 211 в кодовой странице CP1251 выглядит так: У, а в CP1253(греческая) выглядит так: Σ ». Во всех (или почти всех) кодовых таблица первые 128 кодов соответствуют таблице ASCII, только для первых 32 непечатных кодов IBM «назначила» свои картинки (которые показывается при выводе на экран монитора). В верхней части IBM разместила символы псевдографики (для рисования различных рамок), дополнительные символы латиницы, используемые в странах Западной Европы, некоторые математические символы и отдельные символы греческого алфавита. Эта кодовая страница получила название CP437 (IBM разработала и множество других кодовых страниц) и по умолчанию использовалась в видеоадаптерах. Кроме того, различные центры стандартизации (мировые и национальные) создали кодовые страницы для отображения национальных символов. Наши компьютерные «умы» предложили 2 варианта: основная кодировка ДОС и альтернативная кодировка ДОС. Основная предназначалась для работы везде, а альтернативная — в особых случаях, когда использование основной неудобно. Оказалось, что таких особых случаев большинство и основной (не по названию, а по использованию) стала именно «альтернативная» кодировка. Думаю, такой исход был ясен с самого начала для большинства специалистов (кроме «ученых мужей», оторванных от жизни). Дело в том, что в большинстве случаев использовались английские программы, которые «для красоты» активно использовали псевдографику для рисования различных рамок и тп. Типичные пример — суперпопулярный Нортон коммандер, стоящий тогда на большинстве компьютеров. Основная кодировка на местах псевдографики разместила русские символы и панели нортона выглядели просто ужасно (равно как и любой другой псевдографический вывод). А альтернативная кодировка бережно сохранила символы пседографики, использую для русских букв другие места. В результате и с Нортон коммандером и с другими программами вполне можно было работать. Андрей Чернов (широко известная личность в то время) разработал кодировку KOI8-R (КОИ8), пришедшую с «больших» компьютеров, где господствовал UNIX. Ее особенностью было то, что если у русского символа пропадал 8-й бит, то получившийся в результате «обрезания» английский символ будет созвучен исходному русскому. И вместо «Привет» получался «pRIVET», что не совсем то, но хотя бы читаемо. В результате в СССР на компьютерах использовали 3 различных кодовых страницы (основную, альтернативную и KOI8). И это не считая различных «вариаций», когда в альтернативной кодировке, скажем, отдельные символы (а то и строки) изменялись. От KOI8 тоже «отпочковывались» варианты — украинский, белорусский, таджикский, кавказский и др. Оборудование (принтеры, видеодаптеры) тоже надо было настраивать (или «прошивать») для работы со своими кодировками. Коммерсанты могли привезти дешевую партию принтеров (из эмиратов, например, по бартеру) а они не работали с русскими кодировками.
Тем не менее в целом кодовые страницы позволили решить проблему вывода национальных символов (устройство просто должно уметь работать с соответствующей кодовой страницей), но породили проблему множественности кодировок, когда почтовая программа отправляет данные в одной кодировке, а принимающая программа показывает их в другой. В результате пользователь видит так называемые «кракозябры» (вместо «привет» написано «ЏаЁўҐв» или «оПХБЕР»). Потребовались программы-перекодировщики, переводящие данные из одной кодировки в другую. Увы, порой письма при прохождении через почтовые серверы неоднократно автоматически перекодировались (или даже «обрезался» 8-й бит) и нужно было найти и выполнить всю цепочку обратных преобразований.
После массового перехода на Windows к трем кодовым страницам добавилась четвертая (Windows-1251 она же CP1251 она же ANSI ) и пятая (CP866 она же OEM или DOS). Не удивляйтесь — Windows для работы с кириллицей в консоли по-умолчанию использует кодировку CP866 (русские символы такие же как в «альтернативной кодировке», только некоторые спецсимволы отличаются), для других целей — кодировку CP1251. Почему Windows понадобилось две кодировки, неужели нельзя было обойтись одной? Увы, не получается: DOS-кодировка используется в именах файлов (тяжелое наследие DOS) и консольные команды типа dir, copy должны правильно показывать и правильно обрабатывать досовские имена файлов. С другой стороны, в этой кодировке много кодов отведено символам псевдографики (различным рамкам и т.п.), а Windows работает в графическом режиме и ей (а точнее, windows-приложениям) не нужны символы псевдографики (но нужны занятые ими коды, которые в CP1251 использованы для других полезных символов). Пять кириллических кодировок поначалу еще больше усугубили ситуацию, но со временем наиболее популярными стали Windows-1251 и KOI8, а досовскими просто стали меньше пользоваться. Еще при использовании Windows стало неважно, какая кодировка в видеоадаптере (только изредка, до загрузки Windows в диагностических сообщениях можно видеть «кракозябры»).
Решение проблемы кодировок пришло, когда повсеместно стала внедряться система Unicode (и для персональных ОС и для серверов). Unicode каждому национальному символу ставит в соответствие раз и навсегда закрепленное за ним 20-ти битовое число («точку» в кодовом пространстве Unicode, причем чаще всего хватает 16 бит, поскольку 20-битные коды используются для редких символов и иероглифов), поэтому нет необходимости перекодировать (подробнее об Unicode см следующую запись в журнале). Теперь для любой пары <код байта>+<кодовая страница> можно определить соответствующий ей код в Unicode (сейчас в кодовых страницах для каждого 8-битного кода показывается 16-битный код Unicode) и потом при необходимости вывести этот символ для любой кодовой страницы, где он присутствует. В настоящее время проблема кодировок и перекодировок для пользователей практически исчезла, но все же изредка приходят письма, где либо тема письма либо содержание «не в той» кодировке.
Интересно, что примерно год назад проблема кодировок ненадолго всплыла при «наезде» ФАС на сотовых операторов, мол те дискриминируют русскоязычных пользователей, поскольку за передачу кириллицы берут больше. Это объясняется техническим решением, выбранным разработчиком протокола SMS связи. Если бы его россияне разработали, они бы, возможно, отдали приоритет кириллице. В указанной статье «начальник управления контроля транспорта и связи Дмитрий Рутенберг отметил, что существуют и восьмибитные кодировки для кириллицы, которые могли бы использовать операторы.» Во как — на улице 21-й век, Unicode шагает по миру, а господин Рутенберг тянет нас в начало 90-х, когда шла «война кодировок» и проблема перекодировок стояла во весь рост. Интересно, в какой кодировке должен получить СМС Вася Пупкин, пользующийся финским телефоном, находящийся в Турции на отдыхе, от жены с корейским телефоном, отправляющей СМС из Казахстана? А от своего французского компаньона (с японским телефоном), находящегося в Испании? Думаю, никакой начальник ответа на этот вопрос дать не сможет. К счастью, это «экономное» предложение не воплотилось в жизнь.
Юный читатель может спросить — а что помешало сразу использовать Unicode, зачем были придуманы эти заморочки с кодовыми страницами? Думаю, дело в финансовой стороне проблемы. Unicode требует в 2 раза больше памяти, а память стоит денег (и дисковая и ОЗУ). Стал бы американец покупать компьютер на 1-2 тыс дороже из-за того, что «теперь новая ОС требует больше памяти, но позволяет без проблем работать с русским, европейскими, арабскими языками»? Боюсь, простой англоязычный покупатель воспринял бы такой аргумент «неадекватно» (и обратился бы к другим производителям).
Кодировка (или кодирование) – это процедура преобразования данных и сигналов из формы представления, удобной для восприятия человеком, в форму, которую распознает электронное устройство. Прием, позволяющий подготовить информацию для обработки, передачи, а также дальнейшего хранения.
Получаемые данные будут обрабатываться в виде логических единиц и нулей – в двоичной системе. Если числовые символы можно перевести в такую форму представления без проблем, то с кириллицей и другими буквами ситуация обстоит иначе. Буквы не поддерживают перевод в двоичный код. Вместо этого записи сначала преобразовываются в числа по специальной таблице символов. Далее компьютер считывает полученные данные и выдает результат.
В истории сложилось так, что были созданы несколько таблиц символов. Связано это с большим количеством национальных алфавитов, а также разными позициями относительно их написания.
Статья расскажет о существующих кодировках, а также поможет понять, как выразить символы кириллицы в UTF-8 и UTF-16.
Виды кодировок
Кодировать символы можно разными способами. Ситуация напрямую зависит от того, какая кодировка используется в системе. Существуют различные ее виды. Основные:
- ASCII;
- CP866;
- KOI8-R;
- Windows 251;
- Unicode.
Чаще всего встречаются первая и последняя кодировки. Не все они распознают буквы русского алфавита. Далее каждый вариант будет рассмотрен более подробно. А еще предстоит выяснить, что делать, если при попытке закодировать кириллицу на экране появляются непонятные записи.
ASCII – базовая кодировка
ASCII – American Standard Code for Information Interchange. В русском языке произносится как «Аски». Базовая кодировка для работы устройств. Первые 128 ее символов являются наиболее используемыми. Они включают в себя:
- латинские буквы;
- цифры (арабские);
- служебные компоненты;
- знаки препинания.
Для кодировки используется один байт. Это привело к тому, что у ASCII появились расширенные версии. Изначально данные таблицы не предоставляли возможность работы с кириллицей и русскими символами. Вместо них на экране появлялись непонятные записи – «кракозябры».
Выше представлены стандартные таблицы ASCII. В них русского алфавита нет – он не предусмотрен действующими правилами.
Расширенные ASCII
ASCII положила начало развития актуальных современных таблиц кодирования информации. Изначально она содержала 128 составляющих, но в расширенной версии их стало 256. Это дало возможность добавления новых алфавитов для корректного распознавания информации и ее дальнейшего отображения на дисплее устройства.
Первая расширенная версия ASCII – это CP866. В ней реализована первая таблица кодировки русских букв. Верхняя часть CP866 полностью совпадает с базовым «Аски», а нижняя позволяет закодировать кириллицу и некоторые символы, которых нет на клавиатуре.
Выше расположена кодовая таблица CP866. Она распространялась компанией IBM и использовалась преимущественно в DOS-системах.
Кириллица с момента образования CP866 стала активно использоваться к компьютерной технике. Это привело к созданию совершенно новых кодировок с русскими символами. Пример – KOI8-R.
Здесь каждый символ тоже кодируется одним байтом. Первая часть соответствует классической ASCII. Во второй располагаются специальные записи, которых нет на клавиатуре, а также русские буквы.
KOI8-R отличается тем, что буквы в русского языка в ней располагаются не в алфавитном порядке. Они располагаются по принципу созвучия с латиницей. Данный прием предпринят для того, чтобы было удобнее переходить с кириллицы на латинские буквы, отбрасывая всего один бит.
Windows 1251
Дальнейшее развитие кодировок связано с появлением графических операционных систем. Для отображения информации на экране псевдографика стала ненужной. Так возникли группы, которые выступали в качестве расширенных версий ASCII, но являлись более совершенными. Псевдографика в них отсутствовала. Они получили название ANSI.
Наглядный и весьма распространенный вариант такой кодировки – это Windows 1251. Он отличается от предшественников следующими особенностями:
- Вместо псевдографики здесь располагаются недостающие символы кириллицы и русской типографики. Знак ударения – единственное исключение. Его там нет.
- На замену псевдографики пришли элементы, приближенные к кириллице – буквы славянских языков.
- Первые 32 элемента отведены под операции, перевод строки и пробел.
- До 127 элемента расположены интернациональные компоненты, латинский алфавит, знаки препинания и математических действий, цифры.
- Оставшееся «пространство» выделено под национальные элементы. Именно они отображают различные мировые алфавиты.
Кодовая таблица, представленная выше – часть Windows 1251, отведенная под кириллицу и иные элементы.
Unicode
Unicode – кодировка, которая пользуется наибольшим спросом в современных компьютерных устройствах. Этот стандарт включает в себя почти все знаки существующих письменных языков. Он преобладает в Интернете. Был создан в 1991 году.
Unicode является многоязычным стандартом, базирующимся на ASCII. Он включает не только кириллицу, но и азиатские иероглифы. Выступает в качестве универсальной кодировки. Включает в себя несколько стандартов.
UTF-32
Первая вариация Unicode. Для кодирования одного элемента здесь используются 32 бита или 4 байта. Данная особенность приводит к тому, что закодированный кириллический символ в UTF-32 будет иметь вес в 4 раза больше, чем в ASCII. Несмотря на соответствующий недостаток, система стала предлагать закодировать знаки в количестве 232.
Все символы в UTF-32 непосредственно индексируемы. Найти тот или иной знак по номеру его позиции в файле удается очень быстро. Это привело к быстрой обработке операций по замене символьных данных.
UTF-16
UTF-16 – новый, более совершенный стандарт Unicode. После появления стала выступать базовым пространством для всех используемых печатных элементов. Кириллическая таблица в ней тоже есть.
Коды символов в UTF-16 содержатся в 16-ричной системе счислений. Увидеть их можно, если перейти в раздел Windows «Таблица символов». Она располагается в меню «Пуск»–«Программы»–«Стандартные»–«Служебные».
При помощи UTF-16 можно закодировать 65 536 элементов. Это число стало базовым для Unicode. Расширенное пространство включает в себя миллион дополнительных символьных записей.
При переходе с ASCII на UTF-16 размер исходного кода документа увеличивается уже не в 4, а в 2 раза. Связано это с использованием 2 байтов для кодирования одного и того же символа или шестнадцать бит.
UTF-8
Со временем был разработан стандарт UTF-8. В нем тоже есть кириллическая кодовая таблица. Носит название переменной длины. Несмотря на то, что в названии стандарта стоит 8, она действительно меняется. Каждый элемент может получить код длиной от 1 до 6 байт включительно. Практически стандартом используются компоненты до 4 байт. Латинские буквы здесь содержатся в одном байте, как и в ASCII.
В UTF-8 русские символы занимают по 2 байта, а грузинские – по 3. Текущий стандарт предусматривает возможность печати не только букв, но и смайликов. С UTF-8 хорошо работают даже системы, которые не ориентированы на Unicode. Связано это с тем, что базовая часть ASCII перешла в новый стандарт Юникода.
Блоки кириллицы
Unicode, начиная с версии 9.0, для кириллицы отвел пять различных блоков:
Как называется | Диапазон кодов типа hex | Версия Unicode | |
Cyrillic | Стандартная кириллица | От 0400 до 04FF | 1.1 |
Cyrillic Supplement | Дополнения | От 0500 до 052F | 3.2 |
Cyrillic Extended-A | Расширенная кириллица–А | От 2DE0 до 2DFF | 5.1 |
Extended-B | Кириллица расширенного типа–B | От A640 до A69F | |
Extended-C | Кириллица расширенная–C | От 1C80 до 1C8F | 9.0 |
Эти 4 раздела содержатся в кодовом пространстве Unicode 448 позиций. Из них 22 не определены.
Все символы кириллицы можно разбить на несколько групп:
- славянские алфавиты;
- исторические буквы и старославянский (церковный славянский) алфавит;
- дополнительные буквы для различных языков, использующих кириллицу;
- церковнославянские буквотипы;
- дополнительные буквы и символы для церковнославянского языка;
- элементы для старой орфографии Абхазии;
- старые формы представления кириллицы.
Несмотря на относительное совершенство Unicode, при использовании кодировок кириллицы в UTF-8 и других возникают некоторые проблемы. Пример – неоднозначность относительно кодирования некоторых букв. Для того, чтобы привести текст к единому стилю и корректному отображению, приходится определять каждым конкретным стандартом форму нормализации информации.
Непонятные символы на экране – исправление
Любая страница данных может быть закодирована не только в ASCII, но и в Unicode. Главное правильно выбрать кодировку для русского текста. Если на экране вместо нормальных текстовых данных отображаются «кракозябры» (или непонятные надписи), значит возникла проблема перекодирования.
Для редактирования и создания новых текстовых документов можно использовать различные приложения, поддерживающие работу не только с Unicode. Тогда вероятность возникновения ошибок отображения информации будет сведена к минимуму. Пример – Notepad++. Он умеет подсвечивать синтаксис сотен языков программирования и разметки, что станет особо полезным при программировании проектов.
Чтобы страница, содержащая текст, была приведена от одного стандарта к другому, потребуется:
- Выделить текст в Notepad++.
- Нажать на кнопку «Кодировка» на верхней панели инструментов.
- Выбрать подходящий вариант. Пример – «Преобразовать в UTF-8».
Желательно выбирать вариант кодировки UTF-8 без BOM для русского языка, отображаемого на странице в документе или на сайте. Этот прием поможет сохранить данные без сигнатуры (добавления лишних трех байтов в самое начало документов).
Десятичная система
При преобразовании информации из одной системы счисления (и кодировки) в другую, могут потребоваться ее десятичные значения. Такой вариант используется в ASCII и UTF-32. При помощи него можно перевести символ в удобную для восприятия компьютером форму. А еще – выполнить дальнейшую перекодировку в те или иные системы счисления.
Десятичная система помогает в Windows вводить различные символы при помощи сочетания с Alt. Для перевода кириллицы в UTF-8 format поможет таблица ниже.
В Unicode transformation символьных записей производится при помощи целых чисел без знаков. Необходимые преобразования помогут выполнить специализированные сайты-конвертеры. Самостоятельно такие операции практически не используются. Таблицы соответствия и конвертеры сильно облегчают эту задачу.
Как освоить кодирование информации
Русская кодировка может некорректно отображаться в некоторых приложениях, а также операционных системах. Связано это с тем, что не все стандарты кодирования данных имеют коды для соответствующих элементов.
Чтобы лучше разобраться в программировании, а также грамотном использовании стандартов кодирования и переводе текста из одной системы в другую, рекомендуется закончить дистанционные онлайн курсы. Они предлагают:
- постоянное кураторство;
- домашние задания и интересные практические задачи;
- возможность освоить инновационные профессии и направления в мире IT в сжатые сроки;
- помощь в формировании портфолио;
- разнообразие направлений – есть предложения как для новичков, так и для взрослых.
По завершении курса обучения ученик получит сертификат в электронной форме, подтверждающий приобретенный спектр знаний и умений.
Хотите стать профессионалом в сфере обработки данных? Добро пожаловать на курсы в Otus:
- Промышленный ML на больших данных
- Data Warehouse Analyst
- Data Engineer