Windows cyrillic code page

From Wikipedia, the free encyclopedia

Windows-1251

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 January 2024, 0.3% 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 94.6% 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.)

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 р с т у ф х ц ч ш щ ъ ы ь э ю я

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

Code Page 1174 is another variant created for the Kazakh language, which matches Windows-1251 for the Russian subset of the Cyrillic letters. It differs from KZ-1048 by moving the Cyrillic letter Shha from 8E/9E to 8A/9A.

Code page 1174[17]

0 1 2 3 4 5 6 7 8 9 A B C D E F
8x Ђ Ѓ ѓ Һ Њ Қ Ћ Џ
9x ђ һ њ қ ћ џ
Ax NBSP Ұ ұ Ә ¤ Ө ¦ § Ё © Ғ « ¬ SHY ® Ү
Bx ° ± І і ө µ · ё ғ » ә Ң ң ү

  Different from Windows-1251

Windows Latvian + Russian is a modification of Windows-1251 to support the Latvian language.

Windows Latvian + Russian

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

Windows Cyrillic + Finnish is a modification of Windows-1251 that was used by Paratype to cover the Finnish language. This encoding is supported by FontLab Studio 5.[18] This variant is missing the letters Š and Ž which are used in loanwords in Finnish and can be replaced by the digraphs SH and ZH.

Windows Cyrillic + Finnish

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-1251

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,[19] under which name it is registered with the IANA.[20]

Amiga-1251[19]

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

  1. ^ Matching ISO-8859-15; at a different location than in Windows-1251
  2. ^ Present in Windows-1251, but in a different location (absent from ISO-8859-1/15)
  • Latin script in Unicode
  • Cyrillic script in Unicode
  • Unicode
  • Universal Character Set
    • European Unicode subset (DIN 91379)
  • UTF-8
  1. ^ «Historical trends in the usage of character encodings, January 2024». Retrieved 2024-01-01.
  2. ^ «Frequently Asked Questions».
  3. ^ «Distribution of Character Encodings among websites that use .ru». w3techs.com. Retrieved 2024-01-01.
  4. ^ «Distribution of Character Encodings among websites that use Russian». w3techs.com. Retrieved 2023-01-16.
  5. ^ «Distribution of Character Encodings among websites that use Russian Federation». w3techs.com. Retrieved 2021-11-05.
  6. ^ «cp1251(7) — Linux manual page». man7.org. Retrieved 2018-07-01.
  7. ^ «Code page 1251 information document». Archived from the original on 2016-03-03.
  8. ^ «CCSID 1251 information document». Archived from the original on 2014-11-29.
  9. ^ «CCSID 5347 information document». Archived from the original on 2014-11-29.
  10. ^ Code Page CPGID 01251 (pdf) (PDF), IBM
  11. ^ Code Page CPGID 01251 (txt), IBM
  12. ^ International Components for Unicode (ICU), ibm-1251_P100-1995.ucm, 2002-12-03
  13. ^ International Components for Unicode (ICU), ibm-5347_P100-1998.ucm, 2002-12-03
  14. ^ «Usage Statistics of Character Encodings for Websites». w3techs.com. Archived from the original on 2012-05-30.
  15. ^ Steele, Shawn (1998). CP1251 to Unicode table. Unicode Consortium. CP1251.TXT.
  16. ^ Whistler, Ken (2007). KZ-1048 to Unicode. Unicode Consortium. KZ1048.TXT.
  17. ^ ibm-1174_X100-2007.ucm, IBM
  18. ^ «FontLab Studio 5. Classic pro font editor for Mac & Windows».
  19. ^ a b Malyshev, Michael (2003). «Amiga-1251 to Unicode table». Registration of new charset [Amiga-1251]. IANA.
  20. ^ «Character Sets». IANA.
  • 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.
  • 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.

Dec
Hex
Char
Name

32
20
 
SPACE

33
21
!
EXCLAMATION MARK

34
22
«
QUOTATION MARK

35
23
#
NUMBER SIGN

36
24
$
DOLLAR SIGN

37
25
%
PERCENT SIGN

38
26
&
AMPERSAND

39
27
\’
APOSTROPHE

40
28
(
LEFT PARENTHESIS

41
29
)
RIGHT PARENTHESIS

42
2A
*
ASTERISK

43
2B
+
PLUS SIGN

44
2C
,
COMMA

45
2D

HYPHEN-MINUS

46
2E
.
FULL STOP

47
2F
/
SOLIDUS

48
30
0
DIGIT ZERO

49
31
1
DIGIT ONE

50
32
2
DIGIT TWO

51
33
3
DIGIT THREE

52
34
4
DIGIT FOUR

53
35
5
DIGIT FIVE

54
36
6
DIGIT SIX

55
37
7
DIGIT SEVEN

56
38
8
DIGIT EIGHT

57
39
9
DIGIT NINE

58
3A
:
COLON

59
3B
;
SEMICOLON

60
3C
<
LESS-THAN SIGN

61
3D
=
EQUALS SIGN

62
3E
>
GREATER-THAN SIGN

63
3F
?
QUESTION MARK

64
40
@
COMMERCIAL AT

65
41
A
LATIN CAPITAL LETTER A

66
42
B
LATIN CAPITAL LETTER B

67
43
C
LATIN CAPITAL LETTER C

68
44
D
LATIN CAPITAL LETTER D

69
45
E
LATIN CAPITAL LETTER E

70
46
F
LATIN CAPITAL LETTER F

71
47
G
LATIN CAPITAL LETTER G

72
48
H
LATIN CAPITAL LETTER H

73
49
I
LATIN CAPITAL LETTER I

74
4A
J
LATIN CAPITAL LETTER J

75
4B
K
LATIN CAPITAL LETTER K

76
4C
L
LATIN CAPITAL LETTER L

77
4D
M
LATIN CAPITAL LETTER M

78
4E
N
LATIN CAPITAL LETTER N

79
4F
O
LATIN CAPITAL LETTER O

80
50
P
LATIN CAPITAL LETTER P

81
51
Q
LATIN CAPITAL LETTER Q

82
52
R
LATIN CAPITAL LETTER R

83
53
S
LATIN CAPITAL LETTER S

84
54
T
LATIN CAPITAL LETTER T

85
55
U
LATIN CAPITAL LETTER U

86
56
V
LATIN CAPITAL LETTER V

87
57
W
LATIN CAPITAL LETTER W

88
58
X
LATIN CAPITAL LETTER X

89
59
Y
LATIN CAPITAL LETTER Y

90
5A
Z
LATIN CAPITAL LETTER Z

91
5B
[
LEFT SQUARE BRACKET

92
5C
\
REVERSE SOLIDUS

93
5D
]
RIGHT SQUARE BRACKET

94
5E
^
CIRCUMFLEX ACCENT

95
5F
_
LOW LINE

96
60
`
GRAVE ACCENT

97
61
a
LATIN SMALL LETTER A

98
62
b
LATIN SMALL LETTER B

99
63
c
LATIN SMALL LETTER C

100
64
d
LATIN SMALL LETTER D

101
65
e
LATIN SMALL LETTER E

102
66
f
LATIN SMALL LETTER F

103
67
g
LATIN SMALL LETTER G

104
68
h
LATIN SMALL LETTER H

105
69
i
LATIN SMALL LETTER I

106
6A
j
LATIN SMALL LETTER J

107
6B
k
LATIN SMALL LETTER K

108
6C
l
LATIN SMALL LETTER L

109
6D
m
LATIN SMALL LETTER M

110
6E
n
LATIN SMALL LETTER N

111
6F
o
LATIN SMALL LETTER O

112
70
p
LATIN SMALL LETTER P

113
71
q
LATIN SMALL LETTER Q

114
72
r
LATIN SMALL LETTER R

115
73
s
LATIN SMALL LETTER S

116
74
t
LATIN SMALL LETTER T

117
75
u
LATIN SMALL LETTER U

118
76
v
LATIN SMALL LETTER V

119
77
w
LATIN SMALL LETTER W

120
78
x
LATIN SMALL LETTER X

121
79
y
LATIN SMALL LETTER Y

122
7A
z
LATIN SMALL LETTER Z

123
7B
{
LEFT CURLY BRACKET

124
7C
|
VERTICAL LINE

125
7D
}
RIGHT CURLY BRACKET

126
7E
~
TILDE

128
80
Ђ
CYRILLIC CAPITAL LETTER DJE

129
81
Ѓ
CYRILLIC CAPITAL LETTER GJE

130
82

SINGLE LOW-9 QUOTATION MARK

131
83
ѓ
CYRILLIC SMALL LETTER GJE

132
84

DOUBLE LOW-9 QUOTATION MARK

133
85

HORIZONTAL ELLIPSIS

134
86

DAGGER

135
87

DOUBLE DAGGER

136
88

EURO SIGN

137
89

PER MILLE SIGN

138
8A
Љ
CYRILLIC CAPITAL LETTER LJE

139
8B

SINGLE LEFT-POINTING ANGLE QUOTATION MARK

140
8C
Њ
CYRILLIC CAPITAL LETTER NJE

141
8D
Ќ
CYRILLIC CAPITAL LETTER KJE

142
8E
Ћ
CYRILLIC CAPITAL LETTER TSHE

143
8F
Џ
CYRILLIC CAPITAL LETTER DZHE

144
90
ђ
CYRILLIC SMALL LETTER DJE

145
91

LEFT SINGLE QUOTATION MARK

146
92

RIGHT SINGLE QUOTATION MARK

147
93

LEFT DOUBLE QUOTATION MARK

148
94

RIGHT DOUBLE QUOTATION MARK

149
95

BULLET

150
96

EN DASH

151
97

EM DASH

153
99

TRADE MARK SIGN

154
9A
љ
CYRILLIC SMALL LETTER LJE

155
9B

SINGLE RIGHT-POINTING ANGLE QUOTATION MARK

156
9C
њ
CYRILLIC SMALL LETTER NJE

157
9D
ќ
CYRILLIC SMALL LETTER KJE

158
9E
ћ
CYRILLIC SMALL LETTER TSHE

159
9F
џ
CYRILLIC SMALL LETTER DZHE

160
A0
 
NO-BREAK SPACE

161
A1
Ў
CYRILLIC CAPITAL LETTER SHORT U

162
A2
ў
CYRILLIC SMALL LETTER SHORT U

163
A3
Ј
CYRILLIC CAPITAL LETTER JE

164
A4
¤
CURRENCY SIGN

165
A5
Ґ
CYRILLIC CAPITAL LETTER GHE WITH UPTURN

166
A6
¦
BROKEN BAR

167
A7
§
SECTION SIGN

168
A8
Ё
CYRILLIC CAPITAL LETTER IO

169
A9
©
COPYRIGHT SIGN

170
AA
Є
CYRILLIC CAPITAL LETTER UKRAINIAN IE

171
AB
«
LEFT-POINTING DOUBLE ANGLE QUOTATION MARK

172
AC
¬
NOT SIGN

173
AD
­
SOFT HYPHEN

174
AE
®
REGISTERED SIGN

175
AF
Ї
CYRILLIC CAPITAL LETTER YI

176
B0
°
DEGREE SIGN

177
B1
±
PLUS-MINUS SIGN

178
B2
І
CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I

179
B3
і
CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I

180
B4
ґ
CYRILLIC SMALL LETTER GHE WITH UPTURN

181
B5
µ
MICRO SIGN

182
B6

PILCROW SIGN

183
B7
·
MIDDLE DOT

184
B8
ё
CYRILLIC SMALL LETTER IO

185
B9

NUMERO SIGN

186
BA
є
CYRILLIC SMALL LETTER UKRAINIAN IE

187
BB
»
RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK

188
BC
ј
CYRILLIC SMALL LETTER JE

189
BD
Ѕ
CYRILLIC CAPITAL LETTER DZE

190
BE
ѕ
CYRILLIC SMALL LETTER DZE

191
BF
ї
CYRILLIC SMALL LETTER YI

192
C0
А
CYRILLIC CAPITAL LETTER A

193
C1
Б
CYRILLIC CAPITAL LETTER BE

194
C2
В
CYRILLIC CAPITAL LETTER VE

195
C3
Г
CYRILLIC CAPITAL LETTER GHE

196
C4
Д
CYRILLIC CAPITAL LETTER DE

197
C5
Е
CYRILLIC CAPITAL LETTER IE

198
C6
Ж
CYRILLIC CAPITAL LETTER ZHE

199
C7
З
CYRILLIC CAPITAL LETTER ZE

200
C8
И
CYRILLIC CAPITAL LETTER I

201
C9
Й
CYRILLIC CAPITAL LETTER SHORT I

202
CA
К
CYRILLIC CAPITAL LETTER KA

203
CB
Л
CYRILLIC CAPITAL LETTER EL

204
CC
М
CYRILLIC CAPITAL LETTER EM

205
CD
Н
CYRILLIC CAPITAL LETTER EN

206
CE
О
CYRILLIC CAPITAL LETTER O

207
CF
П
CYRILLIC CAPITAL LETTER PE

208
D0
Р
CYRILLIC CAPITAL LETTER ER

209
D1
С
CYRILLIC CAPITAL LETTER ES

210
D2
Т
CYRILLIC CAPITAL LETTER TE

211
D3
У
CYRILLIC CAPITAL LETTER U

212
D4
Ф
CYRILLIC CAPITAL LETTER EF

213
D5
Х
CYRILLIC CAPITAL LETTER HA

214
D6
Ц
CYRILLIC CAPITAL LETTER TSE

215
D7
Ч
CYRILLIC CAPITAL LETTER CHE

216
D8
Ш
CYRILLIC CAPITAL LETTER SHA

217
D9
Щ
CYRILLIC CAPITAL LETTER SHCHA

218
DA
Ъ
CYRILLIC CAPITAL LETTER HARD SIGN

219
DB
Ы
CYRILLIC CAPITAL LETTER YERU

220
DC
Ь
CYRILLIC CAPITAL LETTER SOFT SIGN

221
DD
Э
CYRILLIC CAPITAL LETTER E

222
DE
Ю
CYRILLIC CAPITAL LETTER YU

223
DF
Я
CYRILLIC CAPITAL LETTER YA

224
E0
а
CYRILLIC SMALL LETTER A

225
E1
б
CYRILLIC SMALL LETTER BE

226
E2
в
CYRILLIC SMALL LETTER VE

227
E3
г
CYRILLIC SMALL LETTER GHE

228
E4
д
CYRILLIC SMALL LETTER DE

229
E5
е
CYRILLIC SMALL LETTER IE

230
E6
ж
CYRILLIC SMALL LETTER ZHE

231
E7
з
CYRILLIC SMALL LETTER ZE

232
E8
и
CYRILLIC SMALL LETTER I

233
E9
й
CYRILLIC SMALL LETTER SHORT I

234
EA
к
CYRILLIC SMALL LETTER KA

235
EB
л
CYRILLIC SMALL LETTER EL

236
EC
м
CYRILLIC SMALL LETTER EM

237
ED
н
CYRILLIC SMALL LETTER EN

238
EE
о
CYRILLIC SMALL LETTER O

239
EF
п
CYRILLIC SMALL LETTER PE

240
F0
р
CYRILLIC SMALL LETTER ER

241
F1
с
CYRILLIC SMALL LETTER ES

242
F2
т
CYRILLIC SMALL LETTER TE

243
F3
у
CYRILLIC SMALL LETTER U

244
F4
ф
CYRILLIC SMALL LETTER EF

245
F5
х
CYRILLIC SMALL LETTER HA

246
F6
ц
CYRILLIC SMALL LETTER TSE

247
F7
ч
CYRILLIC SMALL LETTER CHE

248
F8
ш
CYRILLIC SMALL LETTER SHA

249
F9
щ
CYRILLIC SMALL LETTER SHCHA

250
FA
ъ
CYRILLIC SMALL LETTER HARD SIGN

251
FB
ы
CYRILLIC SMALL LETTER YERU

252
FC
ь
CYRILLIC SMALL LETTER SOFT SIGN

253
FD
э
CYRILLIC SMALL LETTER E

254
FE
ю
CYRILLIC SMALL LETTER YU

255
FF
я
CYRILLIC SMALL LETTER YA

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

Начну с небольшого экскурса в историю компьютера. Поскольку компьютер использовался для обработки информации, то он просто обязан представлять эту информацию в «человеческом» виде. Компьютер хранит информацию в виде чисел (байтов), а человек воспринимает символы (буквы, цифры, различные знаки). Значит, надо сделать сопоставление число <-> символ и задача будет решена. Сначала посчитаем, сколько символов нам надо (не забудем, что «мы» — американцы, использующие латинский алфавит). Нам надо 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 тыс дороже из-за того, что «теперь новая ОС требует больше памяти, но позволяет без проблем работать с русским, европейскими, арабскими языками»? Боюсь, простой англоязычный покупатель воспринял бы такой аргумент «неадекватно» (и обратился бы к другим производителям).

Исторически так сложилось, что кириллическая кодировка существует в нескольких видах.

Windows-1251

Кодировка Windows-1251 (cp1251) является стандартной 8-битной кодировкой для всех русских версий Microsoft Windows. У неё существуют разновидности: казахская, чувашская и т.д. Первая часть таблицы кодировки (латиница) полностью соответствует кодировке ASCII. Вторая часть (под символами указаны шестнадцатеричные коды Unicode) приводится ниже:

0 1 2 3 4 5 6 7 8 9 A B C D E F
8 Ђ
0402
Ѓ
0403

201A
ѓ
0453

201E

2026

2020

2021

20AC

2030
Љ
0409

2039
Њ
040A
Ќ
040C
Ћ
040B
Џ
040F
9 ђ
0452

2018

2019

201C

201D

2022

2013

2014

2122
љ
0459

203A
њ
045A
ќ
045C
ћ
045B
џ
045F
A  
00A0
Ў
040E
ў
045E
Ј
0408
¤
00A4
Ґ
0490
¦
00A6
§
00A7
Ё
0401
©
00A9
Є
0404
« 
00AB
¬
00AC
­
00AD
®
00AE
Ї
0407
B °
00B0
±
00B1
І
0406
і
0456
ґ
0491
µ
00B5

00B6
·
00B7
ё
0451

2116
є
0454
»
00BB
ј
0458
Ѕ
0405
ѕ
0455
ї
0457
C А
0410
Б
0411
В
0412
Г
0413
Д
0414
Е
0415
Ж
0416
З
0417
И
0418
Й
0419
К
041A
Л
041B
М
041C
Н
041D
О
041E
П
041F
D Р
0420
С
0421
Т
0422
У
0423
Ф
0424
Х
0425
Ц
0426
Ч
0427
Ш
0428
Щ
0429
Ъ
042A
Ы
042B
Ь
042C
Э
042D
Ю
042E
Я
042F
E а
0430
б
0431
в
0432
г
0433
д
0434
е
0435
ж
0436
з
0437
и
0438
й
0439
к
043A
л
043B
м
043C
н
043D
о
043E
п
043F
F р
0440
с
0441
т
0442
у
0443
ф
0444
х
0445
ц
0446
ч
0447
ш
0448
щ
0449
ъ
044A
ы
044B
ь
044C
э
044D
ю
044E
я
044F

cp866

В консоли русифицированных систем семейства Windows NT используется кодировка cp866. Первая часть таблицы кодировки (латиница) полностью соответствует кодировке ASCII. Вторая часть (под символами указаны шестнадцатеричные коды Unicode):

Для кодировки cp866 существуют разновидности (чувашская, ГОСТ 19768-87 и т.д.).

0 1 2 3 4 5 6 7 8 9 A B C D E F
8 А
0410
Б
0411
В
0412
Г
0413
Д
0414
Е
0415
Ж
0416
З
0417
И
0418
Й
0419
К
041A
Л
041B
М
041C
Н
041D
О
041E
П
041F
9 Р
0420
С
0421
Т
0422
У
0423
Ф
0424
Х
0425
Ц
0426
Ч
0427
Ш
0428
Щ
0429
Ъ
042A
Ы
042B
Ь
042C
Э
042D
Ю
042E
Я
042F
A а
0430
б
0431
в
0432
г
0433
д
0434
е
0435
ж
0436
з
0437
и
0438
й
0439
к
043A
л
043B
м
043C
н
043D
о
043E
п
043F
B
2591

2592

2593

2502

2524

2561

2562

2556

2555

2563

2551

2557

255D

255C

255B

2510
C
2514

2534

252C

251C

2500

253C

255E

255F

255A

2554

2569

2566

2560

2550

256C

2567
D
2568

2564

2565

2559

2558

2552

2553

256B

256A

2518

250C

2588

2584

258C

2590

2580
E р
0440
с
0441
т
0442
у
0443
ф
0444
х
0445
ц
0446
ч
0447
ш
0448
щ
0449
ъ
044A
ы
044B
ь
044C
э
044D
ю
044E
я
044F
F Ё
0401
ё
0451
Є
0404
є
0454
Ї
0407
ї
0457
Ў
040E
ў
045E
°
00B0

2219
·
00B7

221A

2116
¤
00A4

25A0
 
00A0

KOI8

Стандартом для русской кириллицы в юникс-подобных операционных системах является кодировка КОИ-8 (код обмена информацией, 8 битов), или KOI8. Существует несколько вариантов кодировки КОИ-8 для различных кириллических алфавитов. Русский алфавит описывается в кодировке KOI8-R, украинский — в KOI8-U, существуют также кодировки KOI8-RU (русско-белорусско-украинская), KOI8-T (таджикская) и т.д.

Разработчики КОИ-8 разместили символы русского алфавита таким образом, что если в тексте, написанном в КОИ-8, убирать восьмой бит каждого символа, то получается «читабельный» текст, хотя он и написан латинскими символами.

Вторая часть кодировки KOI8-R (русская), под символами указаны шестнадцатеричные коды Unicode:

0 1 2 3 4 5 6 7 8 9 A B C D E F
8
2500

2502

250C

2510

2514

2518

251C

2524

252C

2534

253C

2580

2584

2588

258C

2590
9
2591

2592

2593
⌠23
20

25A0

2219

221A

2248

2264

2265
 
00A0

2321
°
00B0
²
00B2
·
00B7
÷
00F7
A
2550

2551

2552
ё
0451

2553

2554

2555

2556

2557

2558

2559

255A

255B

255C

255D

255E
B
255F

2560

2561
Ё
0401

2562

2563

2564

2565

2566

2567

2568

2569

256A

256B

256C
©
00A9
C ю
044E
а
0430
б
0431
ц
0446
д
0434
е
0435
ф
0444
г
0433
х
0445
и
0438
й
0439
к
043A
л
043B
м
043C
н
043D
о
043E
D п
043F
я
044F
р
0440
с
0441
т
0442
у
0443
ж
0436
в
0432
ь
044C
ы
044B
з
0437
ш
0448
э
044D
щ
0449
ч
0447
ъ
044A
C Ю
042E
А
0410
Б
0411
Ц
0426
Д
0414
Е
0415
Ф
0424
Г
0413
Х
0425
И
0418
Й
0419
К
041A
Л
041B
М
041C
Н
041D
О
041E
D П
041F
Я
042F
Р
0420
С
0421
Т
0422
У
0423
Ж
0416
В
0412
Ь
042C
Ы
042B
З
0417
Ш
0428
Э
042D
Щ
0429
Ч
0427
Ъ
042A

Юникод (Unicode)

В Юникоде нет русских букв с ударением, поэтому приходится их делать составными, добавляя символ U+0301 («combining acute accent») после ударной гласной (например, ы́ э́ ю́ я́).

0 1 2 3 4 5 6 7 8 9 A B C D E F
400 Ѐ Ё Ђ Ѓ Є Ѕ І Ї Ј Љ Њ Ћ Ќ Ѝ Ў Џ
410 А Б В Г Д Е Ж З И Й К Л М Н О П
420 Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я
430 а б в г д е ж з и й к л м н о п
440 р с т у ф х ц ч ш щ ъ ы ь э ю я
450 ѐ ё ђ ѓ є ѕ і ї ј љ њ ћ ќ ѝ ў џ
460 Ѡ ѡ Ѣ ѣ Ѥ ѥ Ѧ ѧ Ѩ ѩ Ѫ ѫ Ѭ ѭ Ѯ ѯ
470 Ѱ ѱ Ѳ ѳ Ѵ ѵ Ѷ ѷ Ѹ ѹ Ѻ ѻ Ѽ ѽ Ѿ ѿ
480 Ҁ ҁ ҂ ҃ ҄ ҅ ҆ ҇ ҈ ҉ Ҋ ҋ Ҍ ҍ Ҏ ҏ
490 Ґ ґ Ғ ғ Ҕ ҕ Җ җ Ҙ ҙ Қ қ Ҝ ҝ Ҟ ҟ
4A0 Ҡ ҡ Ң ң Ҥ ҥ Ҧ ҧ Ҩ ҩ Ҫ ҫ Ҭ ҭ Ү ү
4B0 Ұ ұ Ҳ ҳ Ҵ ҵ Ҷ ҷ Ҹ ҹ Һ һ Ҽ ҽ Ҿ ҿ
4C0 Ӏ Ӂ ӂ Ӄ ӄ Ӆ ӆ Ӈ ӈ Ӊ ӊ Ӌ ӌ Ӎ ӎ ӏ
4D0 Ӑ ӑ Ӓ ӓ Ӕ ӕ Ӗ ӗ Ә ә Ӛ ӛ Ӝ ӝ Ӟ ӟ
4E0 Ӡ ӡ Ӣ ӣ Ӥ ӥ Ӧ ӧ Ө ө Ӫ ӫ Ӭ ӭ Ӯ ӯ
4F0 Ӱ ӱ Ӳ ӳ Ӵ ӵ Ӷ ӷ Ӹ ӹ Ӻ ӻ Ӽ ӽ Ӿ ӿ
500 Ԁ ԁ Ԃ ԃ Ԅ ԅ Ԇ ԇ Ԉ ԉ Ԋ ԋ Ԍ ԍ Ԏ ԏ
510 Ԑ ԑ Ԓ ԓ Ԕ ԕ Ԗ ԗ Ԙ ԙ Ԛ ԛ Ԝ ԝ Ԟ ԟ
520 Ԡ ԡ Ԣ ԣ Ԥ ԥ Ԧ ԧ
2DE0
2DF0 ⷿ
A640
A650
A660
A670
A680
A690

Windows-1251 code page

Windows-1251 (legacy, Cyrillic)

Windows-1251 (legacy, Cyrillic) is a 8-bit single-byte coded character set.

Hex to decimal converter

The code page above has hexadecimal numbers, use this tool to convert to decimal:

More character sets

  • US-ASCII (basic English)
  • ISO-8859-1 (Western Europe)
  • ISO-8859-2 (Central Europe)
  • ISO-8859-3 (Southern Europe)
  • ISO-8859-4 (Baltic)
  • ISO-8859-5 (Cyrillic)
  • ISO-8859-6 (Arabic)
  • ISO-8859-7 (Greek)
  • ISO-8859-8 (Hebrew)
  • ISO-8859-9 (Turkish)
  • ISO-8859-15 (Latin 9)
  • SHIFT_JIS (Japanese, Win/Mac)
  • Windows-1250 (legacy, Central Europe)
  • Windows-1251 (legacy, Cyrillic)
  • Windows-1252 (legacy, Western Europe)
  • Windows-1253 (legacy, Greek)
  • Windows-1254 (legacy, Turkish)
  • Windows-1255 (legacy, Hebrew)
  • Windows-1256 (legacy, Arabic)
  • Windows-1257 (legacy, Baltic Rim)
  • Windows-1258 (legacy, Vietnam)

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

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Windows cmd current dir
  • Lenovo miix 3 1030 установка windows
  • Как создать загрузочную флешку windows 10 с помощью телефона
  • Treesize for windows 7
  • Out of range на мониторе при запуске windows 10 как исправить