Кодировка русских символов windows

Материал из РУВИКИ — свободной энциклопедии

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
  1. Historical trends in the usage of character encodings, April 2019. Дата обращения: 11 февраля 2016. Архивировано 3 марта 2021 года.
  • История создании кодировки в сообщении Игоря Семенюка в эхоконференции SU.LAN от 14 января 1996

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 ; &#59; ; Semicolon
60 074 3C 00111100 < &#60; &lt; Less than (or open angled bracket)
61 075 3D 00111101 = &#61; &equals; Equals
62 076 3E 00111110 > &#62; &gt; Greater than (or close angled bracket)
63 077 3F 00111111 ? &#63; &quest; Question mark
64 100 40 01000000 @ &#64; &commat; At sign
65 101 41 01000001 A &#65;   Uppercase A
66 102 42 01000010 B &#66;   Uppercase B
67 103 43 01000011 C &#67;   Uppercase C
68 104 44 01000100 D &#68;   Uppercase D
69 105 45 01000101 E &#69;   Uppercase E
70 106 46 01000110 F &#70;   Uppercase F
71 107 47 01000111 G &#71;   Uppercase G
72 110 48 01001000 H &#72;   Uppercase H
73 111 49 01001001 I &#73;   Uppercase I
74 112 4A 01001010 J &#74;   Uppercase J
75 113 4B 01001011 K &#75;   Uppercase K
76 114 4C 01001100 L &#76;   Uppercase L
77 115 4D 01001101 M &#77;   Uppercase M
78 116 4E 01001110 N &#78;   Uppercase N
79 117 4F 01001111 O &#79;   Uppercase O
80 120 50 01010000 P &#80;   Uppercase P
81 121 51 01010001 Q &#81;   Uppercase Q
82 122 52 01010010 R &#82;   Uppercase R
83 123 53 01010011 S &#83;   Uppercase S
84 124 54 01010100 T &#84;   Uppercase T
85 125 55 01010101 U &#85;   Uppercase U
86 126 56 01010110 V &#86;   Uppercase V
87 127 57 01010111 W &#87;   Uppercase W
88 130 58 01011000 X &#88;   Uppercase X
89 131 59 01011001 Y &#89;   Uppercase Y
90 132 5A 01011010 Z &#90;   Uppercase Z
91 133 5B 01011011 [ &#91; &lsqb; Opening bracket
92 134 5C 01011100 \ &#92; &bsol; Backslash
93 135 5D 01011101 ] &#93; &rsqb; Closing bracket
94 136 5E 01011110 ^ &#94; &Hat; Caret — circumflex
95 137 5F 01011111 _ &#95; &lowbar; Underscore
96 140 60 01100000 ` &#96; &grave; Grave accent
97 141 61 01100001 a &#97;   Lowercase a
98 142 62 01100010 b &#98;   Lowercase b
99 143 63 01100011 c &#99;   Lowercase c
100 144 64 01100100 d &#100;   Lowercase d
101 145 65 01100101 e &#101;   Lowercase e
102 146 66 01100110 f &#102;   Lowercase f
103 147 67 01100111 g &#103;   Lowercase g
104 150 68 01101000 h &#104;   Lowercase h
105 151 69 01101001 i &#105;   Lowercase i
106 152 6A 01101010 j &#106;   Lowercase j
107 153 6B 01101011 k &#107;   Lowercase k
108 154 6C 01101100 l &#108;   Lowercase l
109 155 6D 01101101 m &#109;   Lowercase m
110 156 6E 01101110 n &#110;   Lowercase n
111 157 6F 01101111 o &#111;   Lowercase o
112 160 70 01110000 p &#112;   Lowercase p
113 161 71 01110001 q &#113;   Lowercase q
114 162 72 01110010 r &#114;   Lowercase r
115 163 73 01110011 s &#115;   Lowercase s
116 164 74 01110100 t &#116;   Lowercase t
117 165 75 01110101 u &#117;   Lowercase u
118 166 76 01110110 v &#118;   Lowercase v
119 167 77 01110111 w &#119;   Lowercase w
120 170 78 01111000 x &#120;   Lowercase x
121 171 79 01111001 y &#121;   Lowercase y
122 172 7A 01111010 z &#122;   Lowercase z
123 173 7B 01111011 { &#123; &lcub; Opening brace
124 174 7C 01111100 | &#124; &verbar; Vertical bar
125 175 7D 01111101 } &#125; &rcub; Closing brace
126 176 7E 01111110 ~ &#126; &tilde; Equivalency sign — tilde
127 177 7F 01111111 &#127;   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 Ђ &#1026; &DJcy; Cyrillic capital letter Dje
129 201 81 10000001 Ѓ &#1027; &GJcy; Cyrillic capital letter Gje
130 202 82 10000010 &#130; &sbquo; Single low-9 quotation mark
131 203 83 10000011 ѓ &#1107; &gjcy; Cyrillic small letter gje
132 204 84 10000100 &#132; &bdquo; Double low-9 quotation mark
133 205 85 10000101 &#133; &hellip; Horizontal ellipsis
134 206 86 10000110 &#134; &dagger; Dagger
135 207 87 10000111 &#135; &Dagger; Double dagger
136 210 88 10001000 &#8364; &euro; Euro sign
137 211 89 10001001 &#137; &permil; Per mille sign
138 212 8A 10001010 Љ &#1033; &LJcy; Cyrillic capital letter Lje
139 213 8B 10001011 &#139; &lsaquo; Single left-pointing angle quotation
140 214 8C 10001100 Њ &#1034; &NJcy; Cyrillic capital letter Nje
141 215 8D 10001101 Ќ &#1036; &KJcy; Cyrillic capital letter Kje
142 216 8E 10001110 Ћ &#1035; &TSHcy; Cyrillic capital letter Tshe
143 217 8F 10001111 Џ &#1039; &DZcy; Cyrillic capital letter Dzhe
144 220 90 10010000 ђ &#1106; &djcy; Cyrillic small letter dje
145 221 91 10010001 &#145; &lsquo; Left single quotation mark
146 222 92 10010010 &#146; &rsquo; Right single quotation mark
147 223 93 10010011 &#147; &ldquo; Left double quotation mark
148 224 94 10010100 &#148; &rdquo; Right double quotation mark
149 225 95 10010101 &#149; &bull; Bullet
150 226 96 10010110 &#150; &ndash; En dash
151 227 97 10010111 &#151; &mdash; Em dash
152 230 98 10011000   Unused
153 231 99 10011001 &#153; &trade; Trade mark sign
154 232 9A 10011010 љ &#1113; &ljcy; Cyrillic small letter lje
155 233 9B 10011011 &#155; &rsaquo; Single right-pointing angle quotation mark
156 234 9C 10011100 њ &#1114; &njcy; Cyrillic small letter nje
157 235 9D 10011101 ќ &#1116; &kjcy; Cyrillic small letter Kje
158 236 9E 10011110 ћ &#1115; &tshcy; Cyrillic small letter Tshe
159 237 9F 10011111 џ &#1119; &dzcy; Cyrillic small letter Dzhe
160 240 A0 10100000   &#160; &nbsp; Non-breaking space
161 241 A1 10100001 Ў &#1038; &Ubrcy; Cyrillic capital letter short U
162 242 A2 10100010 ў &#1118; &ubrcy; Cyrillic small letter short u
163 243 A3 10100011 Ј &#1032; &Jsercy; Cyrillic capital letter Je
164 244 A4 10100100 ¤ &#164; &curren; Currency sign
165 245 A5 10100101 Ґ &#1168;   Cyrillic capital letter Ghe with upturn
166 246 A6 10100110 ¦ &#166; &brvbar; Pipe, broken vertical bar
167 247 A7 10100111 § &#167; &sect; Section sign
168 250 A8 10101000 Ё &#1025; &IOcy; Cyrillic capital letter Io
169 251 A9 10101001 © &#169; &copy; Copyright sign
170 252 AA 10101010 Є &#1028; &Jukcy; Cyrillic capital letter Ukrainian Ie
171 253 AB 10101011 « &#171; &laquo; Left double angle quotes
172 254 AC 10101100 ¬ &#172; &not; Negation
173 255 AD 10101101 ­ &#173; &shy; Soft hyphen
174 256 AE 10101110 ® &#174; &reg; Registered trade mark sign
175 257 AF 10101111 Ї &#1031; &YIcy; Cyrillic capital letter Yi
176 260 B0 10110000 ° &#176; &deg; Degree sign
177 261 B1 10110001 ± &#177; &plusmn; Plus-or-minus sign
178 262 B2 10110010 І &#1030; &Iukcy; Cyrillic capital letter Byelorussian-Ukrainian I
179 263 B3 10110011 і &#1110; &iukcy; Cyrillic small letter Byelorussian-Ukrainian i
180 264 B4 10110100 ґ &#1169;   Cyrillic small letter ghe with upturn
181 265 B5 10110101 µ &#181; &micro; Micro sign
182 266 B6 10110110 &#182; &para; Pilcrow sign — paragraph sign
183 267 B7 10110111 · &#183; &middot; Middle dot — Georgian comma
184 270 B8 10111000 ё &#1105; &iocy; Cyrillic small letter io
185 271 B9 10111001 &#8470; &numero; Numero Sign
186 272 BA 10111010 є &#1108; &jukcy; Cyrillic small letter Ukrainian ie
187 273 BB 10111011 » &#187; &raquo; Right double angle quotes
188 274 BC 10111100 ј &#1112; &jsercy; Cyrillic small letter je
189 275 BD 10111101 Ѕ &#1029; &DScy; Cyrillic capital letter Dze
190 276 BE 10111110 ѕ &#1109; &dscy; Cyrillic small letter dze
191 277 BF 10111111 ї &#1111; &yicy; Cyrillic small letter yi
192 300 C0 11000000 А &#1040; &Acy; Cyrillic capital letter A
193 301 C1 11000001 Б &#1041; &Bcy; Cyrillic capital letter Be
194 302 C2 11000010 В &#1042; &Vcy; Cyrillic capital letter Ve
195 303 C3 11000011 Г &#1043; &Gcy; Cyrillic capital letter Ghe
196 304 C4 11000100 Д &#1044; &Dcy; Cyrillic capital letter De
197 305 C5 11000101 Е &#1045; &IEcy; Cyrillic capital letter Ie
198 306 C6 11000110 Ж &#1046; &ZHcy; Cyrillic capital letter Zhe
199 307 C7 11000111 З &#1047; &Zcy; Cyrillic capital letter Ze
200 310 C8 11001000 И &#1048; &Icy; Cyrillic capital letter I
201 311 C9 11001001 Й &#1049; &Jcy; Cyrillic capital letter Short I
202 312 CA 11001010 К &#1050; &Kcy; Cyrillic capital letter Ka
203 313 CB 11001011 Л &#1051; &Lcy; Cyrillic capital letter El
204 314 CC 11001100 М &#1052; &Mcy; Cyrillic capital letter Em
205 315 CD 11001101 Н &#1053; &Ncy; Cyrillic capital letter En
206 316 CE 11001110 О &#1054; &Ocy; Cyrillic capital letter O
207 317 CF 11001111 П &#1055; &Pcy; Cyrillic capital letter Pe
208 320 D0 11010000 Р &#1056; &Rcy; Cyrillic capital letter Er
209 321 D1 11010001 С &#1057; &Scy; Cyrillic capital letter Es
210 322 D2 11010010 Т &#1058; &Tcy; Cyrillic capital letter Te
211 323 D3 11010011 У &#1059; &Ucy; Cyrillic capital letter U
212 324 D4 11010100 Ф &#1060; &Fcy; Cyrillic capital letter Ef
213 325 D5 11010101 Х &#1061; &KHcy; Cyrillic capital letter Ha
214 326 D6 11010110 Ц &#1062; &TScy; Cyrillic capital letter Tse
215 327 D7 11010111 Ч &#1063; &CHcy; Cyrillic capital letter Che
216 330 D8 11011000 Ш &#1064; &SHcy; Cyrillic capital letter Sha
217 331 D9 11011001 Щ &#1065; &SHCHcy; Cyrillic capital letter Shcha
218 332 DA 11011010 Ъ &#1066; &HARDcy; Cyrillic capital letter Hard Sign
219 333 DB 11011011 Ы &#1067; &Ycy; Cyrillic capital letter Yeru
220 334 DC 11011100 Ь &#1068; &SOFTcy; Cyrillic capital letter Soft Sign
221 335 DD 11011101 Э &#1069; &Ecy; Cyrillic capital letter E
222 336 DE 11011110 Ю &#1070; &YUcy; Cyrillic capital letter Yu
223 337 DF 11011111 Я &#1071; &YAcy; Cyrillic capital letter Ya
224 340 E0 11100000 а &#1072; &acy; Cyrillic Small Letter A
225 341 E1 11100001 б &#1073; &bcy; Cyrillic small letter be
226 342 E2 11100010 в &#1074; &vcy; Cyrillic small letter ve
227 343 E3 11100011 г &#1075; &gcy; Cyrillic small letter ghe
228 344 E4 11100100 д &#1076; &dcy; Cyrillic small letter de
229 345 E5 11100101 е &#1077; &iecy; Cyrillic small letter ie
230 346 E6 11100110 ж &#1078; &zhcy; Cyrillic small letter zhe
231 347 E7 11100111 з &#1079; &zcy; Cyrillic small letter ze
232 350 E8 11101000 и &#1080; &icy; Cyrillic small letter i
233 351 E9 11101001 й &#1081; &jcy; Cyrillic small letter short i
234 352 EA 11101010 к &#1082; &kcy; Cyrillic small letter ka
235 353 EB 11101011 л &#1083; &lcy; Cyrillic small letter el
236 354 EC 11101100 м &#1084; &mcy; Cyrillic small letter em
237 355 ED 11101101 н &#1085; &ncy; Cyrillic small letter en
238 356 EE 11101110 о &#1086; &ocy; Cyrillic small letter o
239 357 EF 11101111 п &#1087; &pcy; Cyrillic small letter pe
240 360 F0 11110000 р &#1088; &rcy; Cyrillic small letter er
241 361 F1 11110001 с &#1089; &scy; Cyrillic small letter es
242 362 F2 11110010 т &#1090; &tcy; Cyrillic small letter te
243 363 F3 11110011 у &#1091; &ucy; Cyrillic small letter u
244 364 F4 11110100 ф &#1092; &fcy; Cyrillic small letter ef
245 365 F5 11110101 х &#1093; &khcy; Cyrillic small letter ha
246 366 F6 11110110 ц &#1094; &tscy; Cyrillic small letter tse
247 367 F7 11110111 ч &#1095; &chcy; Cyrillic small letter che
248 370 F8 11111000 ш &#1096; &shcy; Cyrillic small letter sha
249 371 F9 11111001 щ &#1097; &shchcy; Cyrillic small letter shcha
250 372 FA 11111010 ъ &#1098; &hardcy; Cyrillic small letter hard sign
251 373 FB 11111011 ы &#1099; &ycy; Cyrillic small letter yeru
252 374 FC 11111100 ь &#1100; &softcy; Cyrillic small letter soft sign
253 375 FD 11111101 э &#1101; &ecy; Cyrillic small letter e
254 376 FE 11111110 ю &#1102; &yucy; Cyrillic small letter yu
255 377 FF 11111111 я &#1103; &yacy; Cyrillic small letter ya

Что такое кодировка:

Кодировка это процесс преобразования данных или сигналов из формы, удобной для восприятия, в форму, удобную для хранения, обработки и передачи.

Данные в микроконтроллере хранятся, обрабатываются и передаются в виде логических единиц и нулей, то есть в двоичной системе счисления. Числа можно перевести из любой системы счисления в двоичную и обратно, а символы (буквы) перевести в двоичную систему нельзя. Символы не переводятся а кодируются в числа, в соответствии с используемой таблицей символов. Таблица символов это таблица в которой каждому символу соответствует число, например, символу ‘J’ соответствует число 74. Значит в памяти Arduino символ ‘J’ будет храниться как число 0b01001010 = 0x4A = 74.

Исторически сложилось так, что было создано множество таблиц символов. Виной тому и множество алфавитов различных языков, и разные взгляды на очерёдность следования символов в таблице, и стремление разработчиков уместить все символы в 1 байт, и наоборот создать универсальные кодировки ценой увеличения занимаемого места и т.д. Но в большинстве таблиц, первые 127 символов совпадают и являются знаками, числами и символами латиницы.

Ваш компьютер не является исключением, текст на нём так же хранится в виде чисел, а значит он кодируется. При этом разные файлы могут использовать разную кодировку (использовать разные таблицы символов). Значит и скетчи хранящиеся на Вашем компьютере так же используют определённую кодировку. А именно от кодировки скетча зависит как будут записаны русские символы в микроконтроллер, ведь компилятор не кодирует текст, а читает и сохраняет его числовое (кодированное) представление.

Наиболее распространёнными кодировками с поддержкой Русского языка (с использованием символов Кириллицы) являются: UTF-8, Windows-1251, CP-866, KOI-8R, ISO-8859-5. Стоит отметить что все эти кодировки представляют один символ одним однобайтным числом, кроме кодировки UTF-8 в которой один символ Кириллицы кодируется двухбайтным числом, а значит в кодировке UTF-8 строка русского текста занимает в два раза больше памяти.

Какую кодировку использует Arduino IDE:

Точно сказать какую кодировку использует Arduino IDE нельзя, так как разные её версии использовали разную кодировку. На момент написания данной статьи последняя версия Arduino IDE 1.8.5 сохраняет скетчи в кодировке UTF-8 и монитор последовательного порта этой версии использует кодировку UTF-8. Но не сохранённые скетчи используют кодировку предыдущих версий — Windows-1251.

Попробуйте в Arduino IDE 1.8.5 создать новый скетч (меню: «Файл>Новый») и напишите в нём следующий код:

void setup(){                    //
     Serial.begin(9600);         // Инициируем работу шины UART на скорости 9600 бит/сек.
     Serial.println("Привет");   // Отправляем текст в монитор последовательного порта.
}                                //
void loop(){                     //
}                                //

Загрузите скетч в Arduino (меню: «Скетч>Загрузка»). Arduino IDE предложит Вам сохранить скетч перед загрузкой, откажитесь нажав на кнопку «Отмена», начнётся загрузка скетча в Arduino. Дождитесь завершения загрузки и откройте монитор последовательного порта (меню: «Инструменты>монитор порта»). В мониторе порта вы увидите текст «⸮⸮⸮⸮⸮⸮». Дело в том, что скетч был загружен в Arduino в кодировке Windows-1251, а монитор последовательного порта использует кодировку UTF-8.

Теперь загрузите тот же скетч в Arduino (меню: «Скетч>Загрузка»), но согласитесь с сохранением скетча, а после его загрузки откройте монитор последовательного порта (меню: «Инструменты>монитор порта»). В мониторе порта вы увидите текст «Привет». Дело в том, что теперь скетч был загружен в кодировке UTF-8 и в той же кодировке работает монитор порта. Кодировки совпали и текст стал читаемым.

Если вместо строки «Привет» Вы напишете «Privet», то в обоих случаях строка корректно отобразится в мониторе порта, так как числовое представление символов латиницы совпадает в большинстве кодировок.

Запись и вывод текста в Arduino IDE на русском языке:

Как видно из предыдущего примера, кодировка выводимого текста на русском языке должна совпадать с кодировкой устройства для которого этот текст предназначен. Но многие устройства (дисплеи, модули gsm, bluetooth и т.д.) используют кодировку отличную от UTF-8 и тогда возникает вопрос, как в скетче записать текст на русском языке?

Для записи одного символа достаточно указать его код из таблицы символов (в примере указан код в 10-тичной системе счисления):

char i = 74;                     // Определяем символ с кодом 74 (это код символа 'J').
void setup(){                    //
     Serial.begin(9600);         // Инициируем работу шины UART на скорости 9600 бит/сек.
     Serial.println(i);          // Отправляем символ в монитор последовательного порта.
}                                //
void loop(){                     //
}                                //

В мониторе последовательного порта отобразится символ ‘J’.

Для записи любого символа в строке нужно указать его код из таблицы символов в 8-ричной системе счисления, которому должен предшествовать обратный слеш «\». Данное правило действует для любых строк в Arduino IDE.

char i[]="\110\145\154\154\157"; // Определяем строку из 5 кодов символов "Hello". Символ конца строки добавляется автоматически.
void setup(){                    //
     Serial.begin(9600);         // Инициируем работу шины UART на скорости 9600 бит/сек.
     Serial.println(i);          // Отправляем строку в монитор последовательного порта.
}                                //
void loop(){                     //
}                                //

Не смотря на то что запись строки «i» кажется громоздкой, она занимает всего 6 байт (5 символов + автоматически добавленный символ конца строки). В мониторе последовательного порта отобразится строка «Hello».

Для записи символов и строк на русском языке действуют те же правила:

char i[] = "\320\237\321\200\320\270\320\262\320\265\321\202"; // текст "Привет" в кодировке UTF-8.
char j[] = "\317\360\350\342\345\362"; // текст "Привет" в кодировке Windows-1251.
char k[] = "\217\340\250\242\245\342"; // текст "Привет" в кодировке CP-866.
char l[] = "\360\322\311\327\305\324"; // текст "Привет" в кодировке KOI-8R.
char m[] = "\277\340\330\322\325\342"; // текст "Привет" в кодировке ISO-8859-5.
char n[] = "Привет";                   // текст "Привет" в кодировке файла скетча.

В данном примере строки «j», «k», «l» и «m» занимают по 7 байт (6 символов + автоматически добавленный символ конца строки), а строка «i» занимает 13 байт (6 символов по 2 байта каждый + автоматически добавленный символ конца строки). Строка «n» может занимать либо 7, либо 13 байт, это зависит от кодировки используемой Arduino IDE.

Если в тексте с символами Кириллицы присутствуют числа, знаки или символы латиницы, то символы Кириллицы пишутся кодами, а символы знаков, цифр и латиницы можно писать символами, так как они будут корректно отображаться для практически любой кодировки.

char m[] = "\277\340\330\322\325\342 - Hello"; // текст "Привет - Hello" в кодировке ISO-8859-5.

Таблица символов:

В таблице каждому символу сопоставлен его код в десятичной, шестнадцатеричной и восьмеричной системах счисления. Для указания символа в строке, используется его код записанный в восьмеричной системе счисления (указан в таблице серым цветом и начинается обратным слешем).

Симв: UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
пробел 32 0x20 \40 32 0x20 \40 32 0x20 \40 32 0x20 \40 32 0x20 \40
! 33 0x21 \41 33 0x21 \41 33 0x21 \41 33 0x21 \41 33 0x21 \41
« 34 0x22 \42 34 0x22 \42 34 0x22 \42 34 0x22 \42 34 0x22 \42
# 35 0x23 \43 35 0x23 \43 35 0x23 \43 35 0x23 \43 35 0x23 \43
$ 36 0x24 \44 36 0x24 \44 36 0x24 \44 36 0x24 \44 36 0x24 \44
% 37 0x25 \45 37 0x25 \45 37 0x25 \45 37 0x25 \45 37 0x25 \45
& 38 0x26 \46 38 0x26 \46 38 0x26 \46 38 0x26 \46 38 0x26 \46
39 0x27 \47 39 0x27 \47 39 0x27 \47 39 0x27 \47 39 0x27 \74
( 40 0x28 \50 40 0x28 \50 40 0x28 \50 40 0x28 \50 40 0x28 \50
) 41 0x29 \51 41 0x29 \51 41 0x29 \51 41 0x29 \51 41 0x29 \51
* 42 0x2A \52 42 0x2A \52 42 0x2A \52 42 0x2A \52 42 0x2A \52
+ 43 0x2B \53 43 0x2B \53 43 0x2B \53 43 0x2B \53 43 0x2B \53
, 44 0x2C \54 44 0x2C \54 44 0x2C \54 44 0x2C \54 44 0x2C \54
45 0x2D \55 45 0x2D \55 45 0x2D \55 45 0x2D \55 45 0x2D \55
. 46 0x2E \56 46 0x2E \56 46 0x2E \56 46 0x2E \56 46 0x2E \56
/ 47 0x2F \57 47 0x2F \57 47 0x2F \57 47 0x2F \57 47 0x2F \57
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
0 48 0x30 \60 48 0x30 \60 48 0x30 \60 48 0x30 \60 48 0x30 \60
1 49 0x31 \61 49 0x31 \61 49 0x31 \61 49 0x31 \61 49 0x31 \61
2 50 0x32 \62 50 0x32 \62 50 0x32 \62 50 0x32 \62 50 0x32 \62
3 51 0x33 \63 51 0x33 \63 51 0x33 \63 51 0x33 \63 51 0x33 \63
4 52 0x34 \64 52 0x34 \64 52 0x34 \64 52 0x34 \64 52 0x34 \64
5 53 0x35 \65 53 0x35 \65 53 0x35 \65 53 0x35 \65 53 0x35 \65
6 54 0x36 \66 54 0x36 \66 54 0x36 \66 54 0x36 \66 54 0x36 \66
7 55 0x37 \67 55 0x37 \67 55 0x37 \67 55 0x37 \67 55 0x37 \74
8 56 0x38 \70 56 0x38 \70 56 0x38 \70 56 0x38 \70 56 0x38 \70
9 57 0x39 \71 57 0x39 \71 57 0x39 \71 57 0x39 \71 57 0x39 \71
: 58 0x3A \72 58 0x3A \72 58 0x3A \72 58 0x3A \72 58 0x3A \72
; 59 0x3B \73 59 0x3B \73 59 0x3B \73 59 0x3B \73 59 0x3B \73
< 60 0x3C \74 60 0x3C \74 60 0x3C \74 60 0x3C \74 60 0x3C \74
= 61 0x3D \75 61 0x3D \75 61 0x3D \75 61 0x3D \75 61 0x3D \75
> 62 0x3E \76 62 0x3E \76 62 0x3E \76 62 0x3E \76 62 0x3E \76
? 63 0x3F \77 63 0x3F \77 63 0x3F \77 63 0x3F \77 63 0x3F \77
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
@ 64 0x40 \100 64 0x40 \100 64 0x40 \100 64 0x40 \100 64 0x40 \100
A 65 0x41 \101 65 0x41 \101 65 0x41 \101 65 0x41 \101 65 0x41 \101
B 66 0x42 \102 66 0x42 \102 66 0x42 \102 66 0x42 \102 66 0x42 \102
C 67 0x43 \103 67 0x43 \103 67 0x43 \103 67 0x43 \103 67 0x43 \103
D 68 0x44 \104 68 0x44 \104 68 0x44 \104 68 0x44 \104 68 0x44 \104
E 69 0x45 \105 69 0x45 \105 69 0x45 \105 69 0x45 \105 69 0x45 \105
F 70 0x46 \106 70 0x46 \106 70 0x46 \106 70 0x46 \106 70 0x46 \106
G 71 0x47 \107 71 0x47 \107 71 0x47 \107 71 0x47 \107 71 0x47 \114
H 72 0x48 \110 72 0x48 \110 72 0x48 \110 72 0x48 \110 72 0x48 \110
I 73 0x49 \111 73 0x49 \111 73 0x49 \111 73 0x49 \111 73 0x49 \111
J 74 0x4A \112 74 0x4A \112 74 0x4A \112 74 0x4A \112 74 0x4A \112
K 75 0x4B \113 75 0x4B \113 75 0x4B \113 75 0x4B \113 75 0x4B \113
L 76 0x4C \114 76 0x4C \114 76 0x4C \114 76 0x4C \114 76 0x4C \114
M 77 0x4D \115 77 0x4D \115 77 0x4D \115 77 0x4D \115 77 0x4D \115
N 78 0x4E \116 78 0x4E \116 78 0x4E \116 78 0x4E \116 78 0x4E \116
O 79 0x4F \117 79 0x4F \117 79 0x4F \117 79 0x4F \117 79 0x4F \117
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
P 80 0x50 \120 80 0x50 \120 80 0x50 \120 80 0x50 \120 80 0x50 \120
Q 81 0x51 \121 81 0x51 \121 81 0x51 \121 81 0x51 \121 81 0x51 \121
R 82 0x52 \122 82 0x52 \122 82 0x52 \122 82 0x52 \122 82 0x52 \122
S 83 0x53 \123 83 0x53 \123 83 0x53 \123 83 0x53 \123 83 0x53 \123
T 84 0x54 \124 84 0x54 \124 84 0x54 \124 84 0x54 \124 84 0x54 \124
U 85 0x55 \125 85 0x55 \125 85 0x55 \125 85 0x55 \125 85 0x55 \125
V 86 0x56 \126 86 0x56 \126 86 0x56 \126 86 0x56 \126 86 0x56 \126
W 87 0x57 \127 87 0x57 \127 87 0x57 \127 87 0x57 \127 87 0x57 \134
X 88 0x58 \130 88 0x58 \130 88 0x58 \130 88 0x58 \130 88 0x58 \130
Y 89 0x59 \131 89 0x59 \131 89 0x59 \131 89 0x59 \131 89 0x59 \131
Z 90 0x5A \132 90 0x5A \132 90 0x5A \132 90 0x5A \132 90 0x5A \132
[ 91 0x5B \133 91 0x5B \133 91 0x5B \133 91 0x5B \133 91 0x5B \133
\ 92 0x5C \134 92 0x5C \134 92 0x5C \134 92 0x5C \134 92 0x5C \134
] 93 0x5D \135 93 0x5D \135 93 0x5D \135 93 0x5D \135 93 0x5D \135
^ 94 0x5E \136 94 0x5E \136 94 0x5E \136 94 0x5E \136 94 0x5E \136
_ 95 0x5F \137 95 0x5F \137 95 0x5F \137 95 0x5F \137 95 0x5F \137
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
` 96 0x60 \140 96 0x60 \140 96 0x60 \140 96 0x60 \140 96 0x60 \140
a 97 0x61 \141 97 0x61 \141 97 0x61 \141 97 0x61 \141 97 0x61 \141
b 98 0x62 \142 98 0x62 \142 98 0x62 \142 98 0x62 \142 98 0x62 \142
c 99 0x63 \143 99 0x63 \143 99 0x63 \143 99 0x63 \143 99 0x63 \143
d 100 0x64 \144 100 0x64 \144 100 0x64 \144 100 0x64 \144 100 0x64 \144
e 101 0x65 \145 101 0x65 \145 101 0x65 \145 101 0x65 \145 101 0x65 \145
f 102 0x66 \146 102 0x66 \146 102 0x66 \146 102 0x66 \146 102 0x66 \146
g 103 0x67 \147 103 0x67 \147 103 0x67 \147 103 0x67 \147 103 0x67 \154
h 104 0x68 \150 104 0x68 \150 104 0x68 \150 104 0x68 \150 104 0x68 \150
i 105 0x69 \151 105 0x69 \151 105 0x69 \151 105 0x69 \151 105 0x69 \151
j 106 0x6A \152 106 0x6A \152 106 0x6A \152 106 0x6A \152 106 0x6A \152
k 107 0x6B \153 107 0x6B \153 107 0x6B \153 107 0x6B \153 107 0x6B \153
l 108 0x6C \154 108 0x6C \154 108 0x6C \154 108 0x6C \154 108 0x6C \154
m 109 0x6D \155 109 0x6D \155 109 0x6D \155 109 0x6D \155 109 0x6D \155
n 110 0x6E \156 110 0x6E \156 110 0x6E \156 110 0x6E \156 110 0x6E \156
o 111 0x6F \157 111 0x6F \157 111 0x6F \157 111 0x6F \157 111 0x6F \157
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
p 112 0x70 \160 112 0x70 \160 112 0x70 \160 112 0x70 \160 112 0x70 \160
q 113 0x71 \161 113 0x71 \161 113 0x71 \161 113 0x71 \161 113 0x71 \161
r 114 0x72 \162 114 0x72 \162 114 0x72 \162 114 0x72 \162 114 0x72 \162
s 115 0x73 \163 115 0x73 \163 115 0x73 \163 115 0x73 \163 115 0x73 \163
t 116 0x74 \164 116 0x74 \164 116 0x74 \164 116 0x74 \164 116 0x74 \164
u 117 0x75 \165 117 0x75 \165 117 0x75 \165 117 0x75 \165 117 0x75 \165
v 118 0x76 \166 118 0x76 \166 118 0x76 \166 118 0x76 \166 118 0x76 \166
w 119 0x77 \167 119 0x77 \167 119 0x77 \167 119 0x77 \167 119 0x77 \174
x 120 0x78 \170 120 0x78 \170 120 0x78 \170 120 0x78 \170 120 0x78 \170
y 121 0x79 \171 121 0x79 \171 121 0x79 \171 121 0x79 \171 121 0x79 \171
z 122 0x7A \172 122 0x7A \172 122 0x7A \172 122 0x7A \172 122 0x7A \172
{ 123 0x7B \173 123 0x7B \173 123 0x7B \173 123 0x7B \173 123 0x7B \173
| 124 0x7C \174 124 0x7C \174 124 0x7C \174 124 0x7C \174 124 0x7C \174
} 125 0x7D \175 125 0x7D \175 125 0x7D \175 125 0x7D \175 125 0x7D \175
~ 126 0x7E \176 126 0x7E \176 126 0x7E \176 126 0x7E \176 126 0x7E \176
127 0x7F \177 127 0x7F \177 127 0x7F \177 127 0x7F \177 127 0x7F \177
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
А 208, 144 0xD0, 0x90 \320\220 192 0xC0 \300 128 0x80 \200 225 0xE1 \341 176 0xB0 \260
Б 208, 145 0xD0, 0x91 \320\221 193 0xC1 \301 129 0x81 \201 226 0xE2 \342 177 0xB1 \261
В 208, 146 0xD0, 0x92 \320\222 194 0xC2 \302 130 0x82 \202 247 0xF7 \367 178 0xB2 \262
Г 208, 147 0xD0, 0x93 \320\223 195 0xC3 \303 131 0x83 \203 231 0xE7 \347 179 0xB3 \263
Д 208, 148 0xD0, 0x94 \320\224 196 0xC4 \304 132 0x84 \204 228 0xE4 \344 180 0xB4 \264
Е 208, 149 0xD0, 0x95 \320\225 197 0xC5 \305 133 0x85 \205 229 0xE5 \345 181 0xB5 \265
Ж 208, 150 0xD0, 0x96 \320\226 198 0xC6 \306 134 0x86 \206 246 0xF6 \366 182 0xB6 \266
З 208, 151 0xD0, 0x97 \320\227 199 0xC7 \307 135 0x87 \207 250 0xFA \372 183 0xB7 \267
И 208, 152 0xD0, 0x98 \320\230 200 0xC8 \310 136 0x88 \210 233 0xE9 \351 184 0xB8 \270
Й 208, 153 0xD0, 0x99 \320\231 201 0xC9 \311 137 0x89 \211 234 0xEA \352 185 0xB9 \271
К 208, 154 0xD0, 0x9A \320\232 202 0xCA \312 138 0x8A \212 235 0xEB \353 186 0xBA \272
Л 208, 155 0xD0, 0x9B \320\233 203 0xCB \313 139 0x8B \213 236 0xEC \354 187 0xBB \273
М 208, 156 0xD0, 0x9C \320\234 204 0xCC \314 140 0x8C \214 237 0xED \355 188 0xBC \274
Н 208, 157 0xD0, 0x9D \320\235 205 0xCD \315 141 0x8D \215 238 0xEE \356 189 0xBD \275
О 208, 158 0xD0, 0x9E \320\236 206 0xCE \316 142 0x8E \216 239 0xEF \357 190 0xBE \276
П 208, 159 0xD0, 0x9F \320\237 207 0xCF \317 143 0x8F \217 240 0xF0 \360 191 0xBF \277
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
Р 208, 160 0xD0, 0xA0 \320\240 208 0xD0 \320 144 0x90 \220 242 0xF2 \362 192 0xC0 \300
С 208, 161 0xD0, 0xA1 \320\241 209 0xD1 \321 145 0x91 \221 243 0xF3 \363 193 0xC1 \301
Т 208, 162 0xD0, 0xA2 \320\242 210 0xD2 \322 146 0x92 \222 244 0xF4 \364 194 0xC2 \302
У 208, 163 0xD0, 0xA3 \320\243 211 0xD3 \323 147 0x93 \223 245 0xF5 \365 195 0xC3 \303
Ф 208, 164 0xD0, 0xA4 \320\244 212 0xD4 \324 148 0x94 \224 230 0xE6 \346 196 0xC4 \304
Х 208, 165 0xD0, 0xA5 \320\245 213 0xD5 \325 149 0x95 \225 232 0xE8 \350 197 0xC5 \305
Ц 208, 166 0xD0, 0xA6 \320\246 214 0xD6 \326 150 0x96 \226 227 0xE3 \343 198 0xC6 \306
Ч 208, 167 0xD0, 0xA7 \320\247 215 0xD7 \327 151 0x97 \227 254 0xFE \376 199 0xC7 \307
Ш 208, 168 0xD0, 0xA8 \320\250 216 0xD8 \330 152 0x98 \230 251 0xFB \373 200 0xC8 \310
Щ 208, 169 0xD0, 0xA9 \320\251 217 0xD9 \331 153 0x99 \231 253 0xFD \375 201 0xC9 \311
Ъ 208, 170 0xD0, 0xAA \320\252 218 0xDA \332 154 0x9A \232 255 0xFF \377 202 0xCA \312
Ы 208, 171 0xD0, 0xAB \320\253 219 0xDB \333 155 0x9B \233 249 0xF9 \371 203 0xCB \313
Ь 208, 172 0xD0, 0xAC \320\254 220 0xDC \334 156 0x9C \234 248 0xF8 \370 204 0xCC \314
Э 208, 173 0xD0, 0xAD \320\255 221 0xDD \335 157 0x9D \235 252 0xFC \374 205 0xCD \315
Ю 208, 174 0xD0, 0xAE \320\256 222 0xDE \336 158 0x9E \236 224 0xE0 \340 206 0xCE \316
Я 208, 175 0xD0, 0xAF \320\257 223 0xDF \337 159 0x9F \237 241 0xF1 \361 207 0xCF \317
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
а 208, 176 0xD0, 0xB0 \320\260 224 0xE0 \340 160 0xA0 \240 193 0xC1 \301 208 0xD0 \320
б 208, 177 0xD0, 0xB1 \320\261 225 0xE1 \341 161 0xA1 \241 194 0xC2 \302 209 0xD1 \321
в 208, 178 0xD0, 0xB2 \320\262 226 0xE2 \342 162 0xA2 \242 215 0xD7 \327 210 0xD2 \322
г 208, 179 0xD0, 0xB3 \320\263 227 0xE3 \343 163 0xA3 \243 199 0xC7 \307 211 0xD3 \323
д 208, 180 0xD0, 0xB4 \320\264 228 0xE4 \344 164 0xA4 \244 196 0xC4 \304 212 0xD4 \324
е 208, 181 0xD0, 0xB5 \320\265 229 0xE5 \345 165 0xA5 \245 197 0xC5 \305 213 0xD5 \325
ж 208, 182 0xD0, 0xB6 \320\266 230 0xE6 \346 166 0xA6 \246 214 0xD6 \326 214 0xD6 \326
з 208, 183 0xD0, 0xB7 \320\267 231 0xE7 \347 167 0xA7 \247 218 0xDA \332 215 0xD7 \327
и 208, 184 0xD0, 0xB8 \320\270 232 0xE8 \350 168 0xA8 \250 201 0xC9 \311 216 0xD8 \330
й 208, 185 0xD0, 0xB9 \320\271 233 0xE9 \351 169 0xA9 \251 202 0xCA \312 217 0xD9 \331
к 208, 186 0xD0, 0xBA \320\272 234 0xEA \352 170 0xAA \252 203 0xCB \313 218 0xDA \332
л 208, 187 0xD0, 0xBB \320\273 235 0xEB \353 171 0xAB \253 204 0xCC \314 219 0xDB \333
м 208, 188 0xD0, 0xBC \320\274 236 0xEC \354 172 0xAC \254 205 0xCD \315 220 0xDC \334
н 208, 189 0xD0, 0xBD \320\275 237 0xED \355 173 0xAD \255 206 0xCE \316 221 0xDD \335
о 208, 190 0xD0, 0xBE \320\276 238 0xEE \356 174 0xAE \256 207 0xCF \317 222 0xDE \336
п 208, 191 0xD0, 0xBF \320\277 239 0xEF \357 175 0xAF \257 208 0xD0 \320 223 0xDF \337
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
р 209, 128 0xD1, 0x80 \321\200 240 0xF0 \360 224 0xE0 \340 210 0xD2 \322 224 0xE0 \340
с 209, 129 0xD1, 0x81 \321\201 241 0xF1 \361 225 0xE1 \341 211 0xD3 \323 225 0xE1 \341
т 209, 130 0xD1, 0x82 \321\202 242 0xF2 \362 226 0xE2 \342 212 0xD4 \324 226 0xE2 \342
у 209, 131 0xD1, 0x83 \321\203 243 0xF3 \363 227 0xE3 \343 213 0xD5 \325 227 0xE3 \343
ф 209, 132 0xD1, 0x84 \321\204 244 0xF4 \364 228 0xE4 \344 198 0xC6 \306 228 0xE4 \344
х 209, 133 0xD1, 0x85 \321\205 245 0xF5 \365 229 0xE5 \345 200 0xC8 \310 229 0xE5 \345
ц 209, 134 0xD1, 0x86 \321\206 246 0xF6 \366 230 0xE6 \346 195 0xC3 \303 230 0xE6 \346
ч 209, 135 0xD1, 0x87 \321\207 247 0xF7 \367 231 0xE7 \347 222 0xDE \336 231 0xE7 \347
ш 209, 136 0xD1, 0x88 \321\210 248 0xF8 \370 232 0xE8 \350 219 0xDB \333 232 0xE8 \350
щ 209, 137 0xD1, 0x89 \321\211 249 0xF9 \371 233 0xE9 \351 221 0xDD \335 233 0xE9 \351
ъ 209, 138 0xD1, 0x8A \321\212 250 0xFA \372 234 0xEA \352 223 0xDF \337 234 0xEA \352
ы 209, 139 0xD1, 0x8B \321\213 251 0xFB \373 235 0xEB \353 217 0xD9 \331 235 0xEB \353
ь 209, 140 0xD1, 0x8C \321\214 252 0xFC \374 236 0xEC \354 216 0xD8 \330 236 0xEC \354
э 209, 141 0xD1, 0x8D \321\215 253 0xFD \375 237 0xED \355 220 0xDC \334 237 0xED \355
ю 209, 142 0xD1, 0x8E \321\216 254 0xFE \376 238 0xEE \356 192 0xC0 \300 238 0xEE \356
я 209, 143 0xD1, 0x8F \321\217 255 0xFF \377 239 0xEF \357 209 0xD1 \321 239 0xEF \357
UTF-8 Win-1251 CP-866 KOI-8R ISO-8859-5
Ё 208, 129 0xD0, 0x81 \320\201 168 0xA8 \250 240 0xF0 \360 179 0xB3 \263 161 0xA1 \241
ё 209, 145 0xD1, 0x91 \321\221 184 0xB8 \270 241 0xF1 \361 163 0xA3 \243 241 0xF1 \361

В данной таблице символов указаны сразу 5 кодировок: «UTF-8», «Windows-1251», «CP-866», «KOI-8R» и «ISO-8859-5». Коды символов от 0 до 127 совпадают для всех кодировок. В кодировке «UTF-8» символы Кириллицы занимают 2 байта, следовательно, для них указано 2 числа.

Стоит отметить кодировку «KOI-8R» в которой (в отличии от остальных) на первый взгляд не просматривается закономерность следования кодов, но на самом деле закономерность есть и заключается она в том, что если сбросить старший бит, то код символа Кириллицы превратится в код сходного по произношению символа латиницы, и наоборот. Например символ «л» записывается кодом 0xCC, если сбросить старший бит то получится 0x4C, а это код символа «L». Значит, если в тексте из символов Кириллицы сбросить старшие биты кода каждого символа, то получится «читаемый» текст из символов латиницы, подобный транслиту.

Примечание:

К недостаткам записи строк кодами символов относится то, что строки в скетче становятся не удобочитаемыми. В качестве альтернативного варианта можно создать функцию преобразования кодировки строк перед их выводом, или хранить строки из символов Кириллицы в отдельном, подключаемом, файле, который будет сохранён в требуемой для вывода кодировке.

Кодировка (или кодирование) – это процедура преобразования данных и сигналов из формы представления, удобной для восприятия человеком, в форму, которую распознает электронное устройство. Прием, позволяющий подготовить информацию для обработки, передачи, а также дальнейшего хранения.

Получаемые данные будут обрабатываться в виде логических единиц и нулей – в двоичной системе. Если числовые символы можно перевести в такую форму представления без проблем, то с кириллицей и другими буквами ситуация обстоит иначе. Буквы не поддерживают перевод в двоичный код. Вместо этого записи сначала преобразовываются в числа по специальной таблице символов. Далее компьютер считывает полученные данные и выдает результат.

В истории сложилось так, что были созданы несколько таблиц символов. Связано это с большим количеством национальных алфавитов, а также разными позициями относительно их написания.

Статья расскажет о существующих кодировках, а также поможет понять, как выразить символы кириллицы в 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. Он отличается от предшественников следующими особенностями:

  1. Вместо псевдографики здесь располагаются недостающие символы кириллицы и русской типографики. Знак ударения – единственное исключение. Его там нет.
  2. На замену псевдографики пришли элементы, приближенные к кириллице – буквы славянских языков.
  3. Первые 32 элемента отведены под операции, перевод строки и пробел.
  4. До 127 элемента расположены интернациональные компоненты, латинский алфавит, знаки препинания и математических действий, цифры.
  5. Оставшееся «пространство» выделено под национальные элементы. Именно они отображают различные мировые алфавиты. 
Кодировка данных: кириллица

Кодовая таблица, представленная выше – часть 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++. Он умеет подсвечивать синтаксис сотен языков программирования и разметки, что станет особо полезным при программировании проектов.

Чтобы страница, содержащая текст, была приведена от одного стандарта к другому, потребуется:

  1. Выделить текст в Notepad++.
  2. Нажать на кнопку «Кодировка» на верхней панели инструментов.
  3. Выбрать подходящий вариант. Пример – «Преобразовать в UTF-8».

Желательно выбирать вариант кодировки UTF-8 без BOM для русского языка, отображаемого на странице в документе или на сайте. Этот прием поможет сохранить данные без сигнатуры (добавления лишних трех байтов в самое начало документов).

Десятичная система

При преобразовании информации из одной системы счисления (и кодировки) в другую, могут потребоваться ее десятичные значения. Такой вариант используется в ASCII и UTF-32. При помощи него можно перевести символ в удобную для восприятия компьютером форму. А еще – выполнить дальнейшую перекодировку в те или иные системы счисления.

Десятичная система помогает в Windows вводить различные символы при помощи сочетания с Alt. Для перевода кириллицы в UTF-8 format поможет таблица ниже.

Кодировка данных: кириллица

Кодировка данных: кириллица

Кодировка данных: кириллица

В Unicode transformation символьных записей производится при помощи целых чисел без знаков. Необходимые преобразования помогут выполнить специализированные сайты-конвертеры. Самостоятельно такие операции практически не используются. Таблицы соответствия и конвертеры сильно облегчают эту задачу.

Как освоить кодирование информации

Русская кодировка может некорректно отображаться в некоторых приложениях, а также операционных системах. Связано это с тем, что не все стандарты кодирования данных имеют коды для соответствующих элементов.

Чтобы лучше разобраться в программировании, а также грамотном использовании стандартов кодирования и переводе текста из одной системы в другую, рекомендуется закончить дистанционные онлайн курсы. Они предлагают:

  • постоянное кураторство;
  • домашние задания и интересные практические задачи;
  • возможность освоить инновационные профессии и направления в мире IT в сжатые сроки;
  • помощь в формировании портфолио;
  • разнообразие направлений – есть предложения как для новичков, так и для взрослых.

По завершении курса обучения ученик получит сертификат в электронной форме, подтверждающий приобретенный спектр знаний и умений.

Хотите стать профессионалом в сфере обработки данных? Добро пожаловать на курсы в Otus:

  • Промышленный ML на больших данных
  • Data Warehouse Analyst
  • Data Engineer

Таблица кодов кириллицы в Unicode, UTF-8 и Windows-1251

Во-первых, напомню, что Юникод — не кодировка, а стандарт кодирования,
кодировки — это UTF-8, UTF-16 и т.д., но, в силу инерции, разработчики и пользователи часто
говорят о «кодировке Юникод», имея в виду распространённую именно в их деревне форму представления символов :)

Во-вторых, на самом деле кодирование там довольно замудрённое, возьмём, скажем русскую заглавную «Ж».

Представляемые в Юникоде символы кодируются целыми числами без знака, их можно называть «кодами символов Unicode».

Так, для буквы «Ж» Unicode = 104610 или 041616 или 10000 0101102. Unicode в двоичном виде разбивается на две части: пять левых бит и шесть правых. Левая часть в старших разрядах дополняется до байта признаком 110 двухбайтного кода UTF-8, получаем 11010000. К правой части в старших разрядах приписываются два бита 10 признака продолжения многобайтного кода, получаем 10010110. Окончательно код буквы «Ж» в UTF-8 будет иметь вид
11010000 100101102 или D0 9616.

Именно последний код мы увидим в любом 16-ричном вьюере файла, например, создав в текстовом редакторе файл со словом «Жора» и сохранив его в UTF-8 (только не из Блокнотика Windows, который добавит в начало файла 3-байтовую метку BOM):

просмотр файла в 16-ричном виде из Far Manager

просмотр файла в 16-ричном виде из Far Manager

То есть, каждая буква кодируется как бы дважды, сначала в 11-битный Unicode, затем в 16-битный UTF-8.

Ниже приведена таблица кодов кириллицы в Unicode, UTF-8 и однобайтовой кодировке Windows-1251.

Символ Unicode UTF-8 Windows-1251
16-ричн. 10-тичн. 16-ричн. 10-тичн.
А 0410

1040 D090 208 144 192
Б 0411 1041 D091 208 145 193
В 0412 1042 D092 208 146 194
Г 0413 1043 D093 208 147 195
Д 0414 1044 D094 208 148 196
Е 0415 1045 D095 208 149 197
Ж 0416 1046 D096 208 150 198
З 0417 1047 D097 208 151 199
И 0418 1048 D098 208 152 200
Й 0419 1049 D099 208 153 201
К 041A 1050 D09A 208 154 202
Л 041B 1051 D09B 208 155 203
М 041C 1052 D09C 208 156 204
Н 041D 1053 D09D 208 157 205
О 041E 1054 D09E 208 158 206
П 041F 1055 D09F 208 159 207
Р 0420 1056 D0A0 208 160 208
С 0421 1057 D0A1 208 161 209
Т 0422 1058 D0A2 208 162 210
У 0423 1059 D0A3 208 163 211
Ф 0424 1060 D0A4 208 164 212
Х 0425 1061 D0A5 208 165 213
Ц 0426 1062 D0A6 208 166 214
Ч 0427 1063 D0A7 208 167 215
Ш 0428 1064 D0A8 208 168 216
Щ 0429 1065 D0A9 208 169 217
Ъ 042A 1066 D0AA 208 170 218
Ы 042B 1067 D0AB 208 171 219
Ь 042C 1068 D0AC 208 172 220
Э 042D 1069 D0AD 208 173 221
Ю 042E 1070 D0AE 208 174 222
Я 042F 1071 D0AF 208 175 223
а 0430 1072 D0B0 208 176 224
б 0431 1073 D0B1 208 177 225
в 0432 1074 D0B2 208 178 226
г 0433 1075 D0B3 208 179 227
д 0434 1076 D0B4 208 180 228
е 0435 1077 D0B5 208 181 229
ж 0436 1078 D0B6 208 182 230
з 0437 1079 D0B7 208 183 231
и 0438 1080 D0B8 208 184 232
й 0439 1081 D0B9 208 185 233
к 043A 1082 D0BA 208 186 234
л 043B 1083 D0BB 208 187 235
м 043C 1084 D0BC 208 188 236
н 043D 1085 D0BD 208 189 237
о 043E 1086 D0BE 208 190 238
п 043F 1087 D0BF 208 191 239
р 0440 1088 D180 209 128 240
с 0441 1089 D181 209 129 241
т 0442 1090 D182 209 130 242
у 0443 1091 D183 209 131 243
ф 0444 1092 D184 209 132 244
х 0445 1093 D185 209 133 245
ц 0446 1094 D186 209 134 246
ч 0447 1095 D187 209 135 247
ш 0448 1096 D188 209 136 248
щ 0449 1097 D189 209 137 249
ъ 044A 1098 D18A 209 138 250
ы 044B 1099 D18B 209 139 251
ь 044C 1100 D18C 209 140 252
э 044D 1101 D18D 209 141 253
ю 044E 1102 D18E 209 142 254
я 044F 1103 D18F 209 143 255
Символы вне общего правила
Ё 0401 1025 D081 208 129 168
ё 0451 1105 D191 209 145 184

23.09.2018, 12:37 [143571 просмотр]


Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Scanner app for windows
  • Winrar 4 pda windows
  • Программа для соединения айфона с компьютером windows
  • Накопительное обновление для windows 10 version 22h2 для систем на базе процессоров x64 kb5027215
  • Максимальная адресуемая память windows 2000