utf 8 номер кодировки

Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

Содержание

История создания

До появления Unicode UTF-8 широко использовались другие кодировки (ASCII, ISO/IEC 646, ISO/IEC 8859, KOI8, Windows-125x).

Впервые кодировка UTF-8 была официально представлена на конференции USENIX в Сан Диего в январе 1993. От других мультибайтных кодировок ее отличала полная совместимость с ASCII: все символы ASCII в UTF-8 кодируются 7 битами. Каждый символ кодировки, отличный от ASCII, состоит из ведущего байта, указывающего длину последовательности, и одного или нескольких продолжающих байт. Такой принцип позволяет определить длину последовательности только по первому байту. Коды символов ASCII, ведущих и продолжающих байт не пересекаются, что позволяет легко найти начало последовательности простым откатом назад максимум на пять байт.

utf 8 номер кодировки. Смотреть фото utf 8 номер кодировки. Смотреть картинку utf 8 номер кодировки. Картинка про utf 8 номер кодировки. Фото utf 8 номер кодировки

В ноябре 2003 года стандартом RFC-3629 максимальная длина последовательности UTF-8 была ограничена четырьмя байтами, однако потенциально UTF-8 позволяет использовать последовательности вплоть до шести байт. На сегодняшний день самой распространенной кодировкой является UTF-8. Она включает в себя более двух миллионов символов: все возможные современные алфавиты, цифры, знаки препинания, математические и специальные символы, музыкальные знаки и символы вымерших форм письменности. А резерва UTF-8 хватит для размещения более двух миллиардов символов. Так что о смене кодировки в ближайшее время задумываться не придётся.

Однако торжество современных технологий — явление относительно новое. Согласно Google, самой распространенной в интернете кодировкой UTF-8 стала только в 2008 году — тогда ее использовали чуть более чем 25% проиндексированных веб-страниц. А еще в 2006 UTF-8 использовали менее чем 10% веб-страниц.

Стремительный рост популярности кодировки UTF-8 связан с целым рядом ее преимуществ перед предшественницами. [Источник 3]

Принципы работы

UTF-8 является лишь представлением Unicode в 8-битном виде. Символы с кодами меньше 128 представляются одним байтом (Латинский алфавит, простейшие знаки препинания и арабские цифры), а так как в Unicode они повторяют ASCII, то текст написанный только этими символами будет являться текстом в ASCII.

Символы с кодами от:

5 и 6 байтов не используется в Unicode. [Источник 4]

Преимущества и недостатки

Общие преимущества

В сравнении с однобайтовыми кодировками.

Преимущества

Недостатки

Сравнение с другими многобайтовыми кодировками

Преимущества

Недостатки

Сравнение с UTF-16

Преимущества

Недостатки

Макет кодовой страницы

UTF-8

_0_1_2_3_4_5_6_7_8_9_A_B_C_D_E_F
0_NUL
0000
0
SOH
0001
1
STX
0002
2
ETX
0003
3
EOT
0004
4
ENQ
0005
5
ACK
0006
6
BEL
0007
7
BS
0008
8
HT
0009
9
LF
000A
10
VT
000B
11
FF
000C
12
CR
000D
13
SO
000E
14
SI
000F
15
1_DLE
0010
16
DC1
0011
17
DC2
0012
18
DC3
0013
19
DC4
0014
20
NAK
0015
21
SYN
0016
22
ETB
0017
23
CAN
0018
24
EM
0019
25
SUB
001A
26
ESC
001B
27
FS
001C
28
GS
001D
29
RS
001E
30
US
001F
31
2_SP
0020
32
!
0021
33
»
0022
34
#
0023
35
$
0024
36
%
0025
37
&
0026
38

0027
39
(
0028
40
)
0029
41
*
002A
42
+
002B
43
,
002C
44

002D
45
.
002E
46
/
002F
47
3_0
0030
48
1
0031
49
2
0032
50
3
0033
51
4
0034
52
5
0035
53
6
0036
54
7
0037
55
8
0038
56
9
0039
57
:
003A
58
;
003B
59
003C
60
=
003D
61
>
003E
62
?
003F
63
4_@
0040
64
A
0041
65
B
0042
66
C
0043
67
D
0044
68
E
0045
69
F
0046
70
G
0047
71
H
0048
72
I
0049
73
J
004A
74
K
004B
75
L
004C
76
M
004D
77
N
004E
78
O
004F
79
5_P
0050
80
Q
0051
81
R
0052
82
S
0053
83
T
0054
84
U
0055
85
V
0056
86
W
0057
87
X
0058
88
Y
0059
89
Z
005A
90
[
005B
91
\
005C
92
]
005D
93
^
005E
94
_
005F
95
6_`
0060
96
a
0061
97
b
0062
98
c
0063
99
d
0064
100
e
0065
101
f
0066
102
g
0067
103
h
0068
104
i
0069
105
j
006A
106
k
006B
107
l
006C
108
m
006D
109
n
006E
110
o
006F
111
7_p
0070
112
q
0071
113
r
0072
114
s
0073
115
t
0074
116
u
0075
117
v
0076
118
w
0077
119
x
0078
120
y
0079
121
z
007A
122
<
007B
123
|
007C
124
>
007D
125

007E
126

DEL
007F
127
8_
+00
128

+01
129

+02
130

+03
131

+04
132

+05
133

+06
134

+07
135

+08
136

+09
137

+0A
138

+0B
139

+0C
140

+0D
141

+0E
142

+0F
143
9_
+10
144

+11
145

+12
146

+13
147

+14
148

+15
149

+16
150

+17
151

+18
152

+19
153

+1A
154

+1B
155

+1C
156

+1D
157

+1E
158

+1F
159
A_
+20
160

+21
161

+22
162

+23
163

+24
164

+25
165

+26
166

+27
167

+28
168

+29
169

+2A
170

+2B
171

+2C
172

+2D
173

+2E
174

+2F
175
B_
+30
176

+31
177

+32
178

+33
179

+34
180

+35
181

+36
182

+37
183

+38
184

+39
185

+3A
186

+3B
187

+3C
188

+3D
189

+3E
190

+3F
191
2-byte
C_
0000
192
0040
193
Latin
0080
194
Latin
00C0
195
Latin
0100
196
Latin
0140
197
Latin
0180
198
Latin
01C0
199
Latin
0200
200
IPA
0240
201
IPA
0280
202
IPA
02C0
203
accents
0300
204
accents
0340
205
Greek
0380
206
Greek
03C0
207
2-byte
D_
Cyril
0400
208
Cyril
0440
209
Cyril
0480
210
Cyril
04C0
211
Cyril
0500
212
Armeni
0540
213
Hebrew
0580
214
Hebrew
05C0
215
Arabic
0600
216
Arabic
0640
217
Arabic
0680
218
Arabic
06C0
219
Syriac
0700
220
Arabic
0740
221
Thaana
0780
222
N’Ko
07C0
223
3-byte
E_
Indic
0800*
224
Misc.
1000
225
Symbol
2000
226
Kana, CJK
3000
227
CJK
4000
228
CJK
5000
229
CJK
6000
230
CJK
7000
231
CJK
8000
232
CJK
9000
233
Asian
A000
234
Hangul
B000
235
Hangul
C000
236
Hangul
D000
237
PUA
E000
238
Forms
F000
239
4‑byte
F_
SMP, SIP
10000*
240
40000
241
80000
242
SSP, SPUA
C0000
243
SPUA-B
100000
244
140000
245
180000
246
1C0000
247
5-byte
200000*
248
5-byte
1000000
249
5-byte
2000000
250
5-byte
3000000
251
6-byte
4000000*
252
6-byte
40000000
253

254

255

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

Красные клетки никогда не должны появляться в действительной последовательности UTF-8. Первые два (C0 и C1) могли использоваться только для недопустимого «чрезмерного кодирования» символов ASCII (то есть, пытаясь закодировать 7-битное значение ASCII между 0 и 127, используя два байта вместо одного, см. Ниже). Оставшиеся красные ячейки указывают ведущие байты последовательностей, которые могут только кодировать числа, превышающие предел 0x10FFFF в Юникоде, или которые также никогда не использовались в исходном проекте для 31 бита (FE и FF).

Розовые ячейки являются ведущими байтами для последовательности из нескольких байтов, из которых допустимы некоторые, но не все возможные последовательности продолжения. E0 и F0 могут начинать сглаженные кодировки, в этом случае отображается самая низкая незашифрованная кодовая точка, помеченная звездочкой «*». F4 может запускать кодовые точки более 0x10FFFF, которые являются недопустимыми. ED может начать кодирование суррогатной половины, которая не может быть закодирована в UTF-16 и также недействительна.

Кодирование и декодирование

UTF-32LE в UTF-8

Схемой можете воспользоваться при кодировании и раскодировании.

Эта схема сделана так, чтобы вы видели какие биты куда попадают как при кодировании, так и раскодировании. По ней видно что при этих обоих процессах просто нужные биты выставляются на нужные позиции при нужных значениях контрольных бит. Можно заметить что компоновка в больших байтовых последовательностях осуществляется по 6 бит (в так называемых лидирующих байтах). При этом старшие биты предусматриваемого кода будут в первых байтах (схоже с порядком Big-Endian). [Источник 7]

utf 8 номер кодировки. Смотреть фото utf 8 номер кодировки. Смотреть картинку utf 8 номер кодировки. Картинка про utf 8 номер кодировки. Фото utf 8 номер кодировки

Кодирование

Порядок действий такой:

Function EncodeUTF8(s)

Декодирование

Function DecodeUTF8(s)

Ошибки кодирования/декодирования

Примеры ниже приведены для быстрой ориентации в случаях некорректного декодирования текст. Так выглядит фраза «Человек сейчас увидит лишь то, что ожидает увидеть.» если она воспринята декодировщиком в кодировке Windows-1251, а не UTF-8:

ЧеловеРѻ СЃРµРв»-час СѻРІРёРґРёС‚ лишь то, что ожидает Сѻвидеть.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *