From Wikipedia, the free encyclopedia
MIME / IANA | windows-1251 |
---|---|
Alias(es) | cp1251 (Code page 1251) |
Language(s) | Russian, Ukrainian, Belarusian, Bulgarian, Serbian Cyrillic, Bosnian Cyrillic, Macedonian, Rotokas, Rusyn, English |
Created by | Microsoft |
Standard | WHATWG Encoding Standard |
Classification | extended ASCII, Windows-125x |
Other related encoding(s) | Amiga-1251, KZ-1048, RFC 1345’s «ECMA-Cyrillic» |
|
Windows-1251 is an 8-bit character encoding, designed to cover languages that use the Cyrillic script such as Russian, Ukrainian, Belarusian, Bulgarian, Serbian Cyrillic, Macedonian and other languages.
On the web, it is the second most-used single-byte character encoding (or third most-used character encoding overall), and most used of the single-byte encodings supporting Cyrillic. As of November 2022, 0.4% of all websites use Windows-1251.[1][2] It’s by far mostly used for Russian, while a small minority of Russian websites use it, with 93.7% of Russian (.ru) websites using UTF-8,[3][4][5] and the legacy 8-bit encoding is distant second. In Linux, the encoding is known as cp1251.[6] IBM uses code page 1251 (CCSID 1251 and euro sign extended CCSID 5347) for Windows-1251.[7][8][9][10][11][12][13]
Windows-1251 and KOI8-R (or its Ukrainian variant KOI8-U) are much more commonly used than ISO 8859-5 (which is used by less than 0.0004% of websites).[14] In contrast to Windows-1252 and ISO 8859-1, Windows-1251 is not closely related to ISO 8859-5.
Unicode (e.g. UTF-8) is preferred to Windows-1251 or other Cyrillic encodings in modern applications, especially on the Internet, making UTF-8 the dominant encoding for web pages. (For further discussion of Unicode’s complete coverage, of 436 Cyrillic letters/code points, including for Old Cyrillic, and how single-byte character encodings, such as Windows-1251 and KOI8-R, cannot provide this, see Cyrillic script in Unicode.)
Character set[edit]
The following table shows Windows-1251. Each character is shown with its Unicode equivalent and its Alt code.
Windows-1251[15] | ||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
0x | NUL | SOH | STX | ETX | EOT | ENQ | ACK | BEL | BS | HT | LF | VT | FF | CR | SO | SI |
1x | DLE | DC1 | DC2 | DC3 | DC4 | NAK | SYN | ETB | CAN | EM | SUB | ESC | FS | GS | RS | US |
2x | SP | ! | » | # | $ | % | & | ‘ | ( | ) | * | + | , | — | . | / |
3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ^ | _ |
6x | ` | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o |
7x | p | q | r | s | t | u | v | w | x | y | z | { | | | } | ~ | DEL |
8x | Ђ | Ѓ | ‚ | ѓ | „ | … | † | ‡ | € | ‰ | Љ | ‹ | Њ | Ќ | Ћ | Џ |
9x | ђ | ‘ | ’ | “ | ” | • | – | — | ™ | љ | › | њ | ќ | ћ | џ | |
Ax | NBSP | Ў | ў | Ј | ¤ | Ґ | ¦ | § | Ё | © | Є | « | ¬ | SHY | ® | Ї |
Bx | ° | ± | І | і | ґ | µ | ¶ | · | ё | № | є | » | ј | Ѕ | ѕ | ї |
Cx | А | Б | В | Г | Д | Е | Ж | З | И | Й | К | Л | М | Н | О | П |
Dx | Р | С | Т | У | Ф | Х | Ц | Ч | Ш | Щ | Ъ | Ы | Ь | Э | Ю | Я |
Ex | а | б | в | г | д | е | ж | з | и | й | к | л | м | н | о | п |
Fx | р | с | т | у | ф | х | ц | ч | ш | щ | ъ | ы | ь | э | ю | я |
Kazakh variant[edit]
An altered version of Windows-1251 was standardised in Kazakhstan as Kazakh standard STRK1048, and is known by the label KZ-1048
. It differs in the rows shown below:
KZ-1048 (STRK1048-2002)[16] | ||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
8x | Ђ | Ѓ | ‚ | ѓ | „ | … | † | ‡ | € | ‰ | Љ | ‹ | Њ | Қ | Һ | Џ |
9x | ђ | ‘ | ’ | “ | ” | • | – | — | ™ | љ | › | њ | қ | һ | џ | |
Ax | NBSP | Ұ | ұ | Ә | ¤ | Ө | ¦ | § | Ё | © | Ғ | « | ¬ | SHY | ® | Ү |
Bx | ° | ± | І | і | ө | µ | ¶ | · | ё | № | ғ | » | ә | Ң | ң | ү |
Differences from Windows-1251
Amiga variant[edit]
MIME / IANA | Amiga-1251 |
---|---|
Alias(es) | Ami1251 |
Language(s) | English, Russian |
Classification | extended ASCII |
Based on | Windows-1251, ISO-8859-1, ISO-8859-15 |
|
Russian Amiga OS systems used a version of code page 1251 which matches Windows-1251 for the Russian subset of the Cyrillic letters, but otherwise mostly follows ISO-8859-1. This version is known as Amiga-1251,[17] under which name it is registered with the IANA.[18]
Amiga-1251[17] | ||||||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
8x | XXX | XXX | BPH | NBH | IND | NEL | SSA | ESA | HTS | HTJ | VTS | PLD | PLU | RI | SS2 | SS3 |
9x | DCS | PU1 | PU2 | STS | CCH | MW | SPA | EPA | SOS | XXX | SCI | CSI | ST | OSC | PM | APC |
Ax | NBSP | ¡ | ¢ | £ | €[a] | ¥ | ¦ | § | Ё | © | №[b] | « | ¬ | SHY | ® | ¯ |
Bx | ° | ± | ² | ³ | ´ | µ | ¶ | · | ё | ¹ | º | » | ¼ | ½ | ¾ | ¿ |
Different from Windows-1251 to match ISO-8859-1
Different from both Windows-1251 and ISO-8859-1
- ^ Matching ISO-8859-15; at a different location than in Windows-1251
- ^ Present in Windows-1251, but in a different location (absent from ISO-8859-1/15)
See also[edit]
- Latin script in Unicode
- Unicode
- Universal Character Set
- European Unicode subset (DIN 91379)
- UTF-8
References[edit]
- ^ «Historical trends in the usage of character encodings, November 2022». Retrieved 2022-11-28.
- ^ «Frequently Asked Questions».
- ^ «Distribution of Character Encodings among websites that use .ru». w3techs.com. Retrieved 2022-11-28.
- ^ «Distribution of Character Encodings among websites that use Russian». w3techs.com. Retrieved 2023-01-16.
- ^ «Distribution of Character Encodings among websites that use Russian Federation». w3techs.com. Retrieved 2021-11-05.
- ^ «cp1251(7) — Linux manual page». man7.org. Retrieved 2018-07-01.
- ^ «Code page 1251 information document». Archived from the original on 2016-03-03.
- ^ «CCSID 1251 information document». Archived from the original on 2014-11-29.
- ^ «CCSID 5347 information document». Archived from the original on 2014-11-29.
- ^ Code Page CPGID 01251 (pdf) (PDF), IBM
- ^ Code Page CPGID 01251 (txt), IBM
- ^ International Components for Unicode (ICU), ibm-1251_P100-1995.ucm, 2002-12-03
- ^ International Components for Unicode (ICU), ibm-5347_P100-1998.ucm, 2002-12-03
- ^ «Usage Statistics of Character Encodings for Websites». w3techs.com. Archived from the original on 2012-05-30.
- ^ Steele, Shawn (1998). CP1251 to Unicode table. Unicode Consortium. CP1251.TXT.
- ^ Whistler, Ken (2007). KZ-1048 to Unicode. Unicode Consortium. KZ1048.TXT.
- ^ a b Malyshev, Michael (2003). «Amiga-1251 to Unicode table». Registration of new charset [Amiga-1251]. IANA.
- ^ «Character Sets». IANA.
Further reading[edit]
- Kornai, Andras; Birnbaum, David J.; da Cruz, Frank; Davis, Bur; Fowler, George; Paine, Richard B.; Paperno, Slava; Simonsen, Keld J.; Thobe, Glenn E.; Vulis, Dimitri; van Wingen, Johan W. (1993-03-13). «CYRILLIC ENCODING FAQ Version 1.3». Retrieved 2020-06-24.
External links[edit]
- Windows 1251 reference chart
- IANA Charset Name Registration
- Unicode mappings of windows 1251 with «best fit»
- Universal Cyrillic decoder, an online program that may help recovering unreadable Cyrillic texts with broken Windows-1251 or other character encodings.
В начале 90-х, когда произошел развал СССР и границы России были открыты, к нам стали поступать программные продукты западного производства. Естественно, все они были англоязычными. В это же время начинает развиваться Интернет. Остро встала проблема русификации ресурсов и программ. Тогда и была придумана русская кодировка Windows 1251. Она позволяет корректно отображать буквы славянских алфавитов:
- русского;
- украинского;
- белорусского;
- сербского;
- болгарского;
- македонского.
Разработка велась русским представительством Microsoft совместно с компаниями «Диалог» и «Параграф». За основу были взяты самописные разработки, которые в 1990-91гг имели хождение среди немногочисленных идеологов ИТ в России.
На сегодняшний день разработан более универсальный способ кодировать символы — UTF-8 (Юникод). В нем представлено почти 90% всех программных и веб-ресурсов. Windows 1251 применяется в 1,6% случаев. (Информация по исследованиям Web Technology Surveys)
Кодировка сайта utf 8 или Windows 1251?
Чтобы ответить на этот вопрос, необходимо немного понять, что такое кодировка и чем они отличаются. Текстовая информация, как впрочем, и любая другая, в компьютере хранится в закодированном виде. Нам легче представить ее как числа. Каждый символ может занимать один или более байт. Windows 1251 является однобайтной кодировкой, а UTF-8 восьмибайтной. Это значит, что в Windows 1251 можно закодировать всего 256 символов.
Так как все сводится к двоичной системе исчисления, а байт – это 8 бит (0 и 1), то и максимальное число сочетаний составляет 28 = 256. Юникод позволяет представлять куда большее число символов, да и на каждый может быть выделен больший размер.
Отсюда и следуют преимущества Юникода:
- В шапке сайта следует указать кодировку, которая используется. Иначе вместо символов отобразятся «кракозяблы». А Юникод является стандартным для всех браузеров – они ловят его «на лету» как установленный по умолчанию.
- Символы сайта останутся одними и теми же, независимо от того, в какой стране загружается ресурс. Это зависит не от географического расположения серверов, а от языка программного обеспечения рабочих станций клиента. Житель Португалии, очевидно, использует клавиатуру и все ПО, включая операционную систему, на родном языке. В его компьютере, скорее всего вообще отсутствует Windows 1251. А если это так, то и сайты на русском языке корректно открываться не будут. Юникод, в свою очередь, «зашит» в любую ОС на любом языке.
- UTF-8 позволяет закодировать большее количество символов. На данный момент используется 6 байт из 8-ми, а русские символы кодируются двумя байтами.
Именно поэтому предпочтительней использовать универсальную кодировку, а не узкоспециализированную, которая применяется только в славянских странах.
Таблица кодировки Windows 1251
Для программистов и разработчиков сайтов бывает необходимо знать номера символов. Для этого используются специальные таблицы кодировки. Ниже представлена таблица для Windows 1251.
Что делать, если слетела кодировка командной строки?
Иногда Вы можете столкнуться с ситуацией, когда в командной строке вместо русских отображаются непонятные символы. Это означает, что возникла проблема кодировки командной строки Windows 7. Почему 7-ка? Потому что, начиная с 8-й версии, используется UTF-8, а в семерке еще Windows 1251.
Единовременно помочь решить проблему может команда chcp 866. Текущий сеанс будет работать корректно. А вот чтобы исправить ошибку кардинально, понадобится реестр.
- Нажмите Win+R и наберите команду regedit. Это позволит попасть в редактор реестра.
- Перейдите по ветке HKEY_CURRENT_USER\Console и посмотрите, чему равно значение для CodePage. Скорее всего, вы увидите что-то, отличное от 866 (правильный вариант).
- Исправьте на 866 в положении «Десятичная».
- Закройте и откройте вновь командную строку. Ситуация должна исправиться.
Отличного Вам дня!
From MobileRead
Jump to: navigation,
search
Windows-1251 (also known as code page CP1251) is a popular 8-bit character code, designed to cover languages that use the Cyrillic alphabet.
Contents
- 1 Introduction
- 2 1251 Code page layout
- 3 Notes
- 4 Coverage
- 4.1 Language specific characters
- 5 For more information
[edit] Introduction
The original ASCII code was designed to work in 7 bits which offers
128 separate characters. The first 32 (0 — 31) were reserved for control codes but most of the rest are printable. The character 127 was defined to implement the backspace/delete functionality but on some devices it will be shown as a small box if coded. Since most items in a computer are stored in bytes with its 8 bits there are another 128 characters that could be used. The Windows-1251 code is designed to use these codes for the Cyrillic alphabet and is much more commonly used than the ISO 8859-5 standard intended for the same purpose but was never really adopted by these users. (It is missing some Ukrainian characters.) In the future, both may eventually give way to Unicode which is the preferred character set.
[edit] 1251 Code page layout
The following table shows Windows-1251. Each character is shown with its decimal code and its Unicode equivalent.
Note that the word codes shown are for reference. They will not normally generate these values but will likely generate the equivalent ISO or UTF-8 values depending on the reader (see special characters). The full Windows-1251 includes ASCII values. The ones shown here are unique to this coding.
|
|
[edit] Notes
- ↑ Unless otherwise indicated the codes listed in the description are the same as Windows-1252 and/or ISO-8859-1.
- ↑ 2.0 2.1 Not the same code as Windows-1252.
- ↑ Not the same as ISO-8859-1.
[edit] Coverage
- All Cyrillic alphabets such as the Russian language. These include
|
|
It is the most widely used character set for encoding the Bulgarian language, Serbian language and Macedonian language.
[edit] Language specific characters
- Ukrainian and Belorussian characters: there are four special letters Ґ, Є, І, and Ї in both upper and lower case.
- Serbian and Macedonian characters: there are five special character Ђ, Љ, Њ, Ћ, and Џ in both upper and lower case.
[edit] For more information
- https://en.wikipedia.org/wiki/Cyrillic_alphabets
- Windows 1251
-
Windows-1251 — набор символов и кодировка, являющаяся стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Была создана на базе кодировок, использовавшихся в ранних «самопальных» русификаторах Windows в 1990—1991 гг. совместно представителями «Параграфа», «Диалога» и российского отделения
Windows-1251 выгодно отличается от других 8‑битных кириллических кодировок (таких как CP866, KOI8-R и ISO-8859-5) наличием практически всех символов, использующихся в русской типографике для обычного текста (отсутствует только значок ударения); она также содержит все символы для близких к русскому языку языков: украинского, белорусского, сербского и болгарского.
Имеет два недостатка:
- строчная буква «я» имеет код 0xFF (255 в десятичной системе). Она является «виновницей» ряда неожиданных проблем в программах без поддержки чистого 8-го бита, а также (гораздо более частый случай) использующих этот код как служебный (в Windows-1252 — ÿ, оба варианта практически не используются; число же
-1
, в дополнительном коде длиной 8 бит представляющееся числом255
, часто используется в программировании как специальное значение, например, индикатор конца файла -1). - отсутствуют символы псевдографики, имеющиеся в CP866 и KOI8 (хотя для самих Windows, для которых она предназначена, в них не было нужды, это делало несовместимость двух использовавшихся в них кодировок заметнее).
Содержание
- 1 Таблицы
- 1.1 Кодировка Windows-1251 (синоним CP1251)
- 1.2 Другие варианты
- 1.2.1 Кодировка CP1251-k (KazWin, казахская кодировка)
- 1.2.2 Кодировка Windows-1251 (чувашский вариант)
- 1.2.3 Татарский вариант
- 2 Внешние ссылки
Таблицы
Нижняя часть таблицы кодировки (латиница) полностью соответствует кодировке Юникоде.
Кодировка Windows-1251 (синоним CP1251)
.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Другие варианты
(Показаны только отличающиеся строки, поскольку всё остальное совпадает)
Кодировка CP1251-k (KazWin, казахская кодировка)
.0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F
8.
Ұ
4B0Ғ
492‚
201Aғ
493„
201E…
2026†
2020‡
2021€
20AC‰
2030Ө
4E8‹
2039Ң
4A2Қ
49AҺ
4BAҮ
4AE
9.
ұ
4B1‘
2018’
2019“
201C”
201D•
2022–
2013—
2014™
2122ө
4E9›
203Aң
4A3қ
49Bһ
4BBү
4AF
A.
A0Ў
40Eў
45EҖ
496¤
A4Ҳ
4B2¦
A6§
A7Ё
401©
A9Є
404«
AB¬
AC
AD®
AEЇ
407
B.
°
B0±
B1І
406і
456ҳ
4B3µ
B5¶
B6·
B7ё
451№
2116є
454»
BBҗ
497Ә
4D8ә
4D9ї
457Кодировка 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Внешние ссылки
- Информация о кодировке на Microsoft GlobalDev
- История создании кодировки в сообщении Игоря Семенюка в эхоконференции SU.LAN от 14 января 1996
- Декодер — Перекодировщик текста с латинских букв в кириллицу и наоборот
- строчная буква «я» имеет код 0xFF (255 в десятичной системе). Она является «виновницей» ряда неожиданных проблем в программах без поддержки чистого 8-го бита, а также (гораздо более частый случай) использующих этот код как служебный (в Windows-1252 — ÿ, оба варианта практически не используются; число же
Wikimedia Foundation.
2010.
Полезное
Смотреть что такое «Windows 1251» в других словарях:
-
Windows-1251 — (a.k.a. code page CP1251) is a popular 8 bit character encoding, designed to cover languages that use the Cyrillic alphabet such as Russian, Bulgarian, Serbian Cyrillic and other languages. It is the most widely used for encoding the Bulgarian,… … Wikipedia
-
Windows-1251 — набор символов и кодировка, являющаяся стандартной 8 битной кодировкой для всех русских версий Microsoft Windows. Пользуется довольно большой популярностью. Была создана на базе кодировок, использовавшихся в ранних «самопальных» русификаторах… … Википедия
-
Windows-1251 — (a.k.a. CP1251) es un popular juego de caracteres de 8 bits, diseñado para cubrir lenguajes que usan el alfabeto cirilico como son el lenguaje Ruso y otros lenguajes. Este es la codifiación más ampliamente usada para codificar Búlgaro, Serbio y… … Wikipedia Español
-
Windows-1251 — Windows Codepages 874 Thai 932 Japanisch 936 Vereinfachtes Chinesisch 949 Koreanisch 950 Traditionelles Chinesisch 1250 Mitteleuropäisch 1251 Kyrillisch 1252 … Deutsch Wikipedia
-
Windows (значения) — Windows: Microsoft Windows семейство проприетарных операционных систем корпорации Microsoft, ориентированных на применение графического интерфейса при управлении. Windows (клавиша) клавиша на клавиатурах ПК совместимых компьютеров,… … Википедия
-
Windows-1252 — ISO 8859 1 Latin 1, Westeuropäisch 2 Latin 2, Mitteleuropäisch 3 Latin 3, Südeuropäisch 4 Latin 4, Baltisch 5 Kyrillisch 6 Arabisch 7 Griechisch 8 … Deutsch Wikipedia
-
Windows-1252 — ISO/IEC 8859 1 (также известная как ISO 8859 1 и Latin 1) кодовая страница, предназначенная для западноевропейских языков; она базируется на символьном наборе популярных в прошлом терминалов ISO 8859. ISO 8859 1 кодировка, зарегистрированная… … Википедия
-
Windows code page — 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… … Wikipedia
-
Windows Glyph List 4 — (сокр. WGL4, также известен как Общеевропейский набор символов англ. Pan European character set) определённый компанией Майкрософт набор из 652 типографических символов Юникода, призванный помочь разработчикам шрифтов в обеспечении… … Википедия
-
Windows-1254 — Windows 1254 кодовая страница, используемая Microsoft Windows для представления турецкого языка. Символы с кодами от A0 до FF совместимы с ISO 8859 9. Для современных приложений UTF 8 предпочтительней windows 1254. Таблица кодов Символы с… … Википедия
Кодировка (или кодирование) – это процедура преобразования данных и сигналов из формы представления, удобной для восприятия человеком, в форму, которую распознает электронное устройство. Прием, позволяющий подготовить информацию для обработки, передачи, а также дальнейшего хранения.
Получаемые данные будут обрабатываться в виде логических единиц и нулей – в двоичной системе. Если числовые символы можно перевести в такую форму представления без проблем, то с кириллицей и другими буквами ситуация обстоит иначе. Буквы не поддерживают перевод в двоичный код. Вместо этого записи сначала преобразовываются в числа по специальной таблице символов. Далее компьютер считывает полученные данные и выдает результат.
В истории сложилось так, что были созданы несколько таблиц символов. Связано это с большим количеством национальных алфавитов, а также разными позициями относительно их написания.
Статья расскажет о существующих кодировках, а также поможет понять, как выразить символы кириллицы в 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