UTF-8
UTF-8 (акăл. Unicode Transformation Format, 8-bit — «Юникода улӑштармалли формат, 8-бит») — символсене кодламалли анлӑ стандарт, Юникод символӗсене, тӗрлӗрен байтпа усӑ курса (1-рен пуҫласа 4 таран), компактлӑрах упрама тата куҫарма май парать, унсӑр пуҫне 7 битлӑ ASСII кодировкӑпа пӗрешкеллӗхе туллин тивӗҫтерет. UTF-8 стандарта официаллӑ майпа RFC 3629 тата ISO/IEC 10646 Annex D документсенче ҫирӗплетнӗ.
UTF-8 кодлӑх хальхи веб-уҫлӑхра чи анлӑ сарӑлни шутланать. Ҫавӑн пекех унпа UNIX-евӗрлӗ операци системӑсенче анлӑ усӑ кураҫҫӗ.
UTF-8 формата 1992 ҫулхи авӑнӑн 2-мӗшӗнче Кен Томпсонпа Роб Пайк шутласа кӑларнӑ, унпа вӗсем Plan 9 ҫинче усӑ курнӑ. Windows-ри кодлӑх идентификаторӗ — 65001.
Комплактлӑх тӗлӗшпе UTF-8, UTF-16-па танлаштарсан, латиницӑпа усӑ курса ҫырнӑ текстсенче лайӑх палӑрать — диактрика паллисӗр латин саспаллисене, цифрӑсене тата чи анлӑ сарӑлнӑ чарӑну паллисене UTF-8 ҫинче кодлама пӗр байт кӑна кирлӗ, тата ҫак символсен кочӗсем вӗсен ASCII-нчи кочӗсемпе пӗрешкел.
Кодланин алгоритмӗ
UTF-8 кодланин алгоритмне RFC 3629 стандартланӑ, вӑл 3 тапхӑртан тӑрать:
1. Символа кодлама кирлӗ октетсен (байтсен) шутне палӑртмалла. Символӑн номерӗ Юникод стандартӗнчен паллӑ.
| Символ номерӗсен диапазонӗ | Кирлӗ октетсен шучӗ |
|---|---|
00000000-0000007F
|
1 |
00000080-000007FF
|
2 |
00000800-0000FFFF
|
3 |
00010000-0010FFFF
|
4 |
Юникодӑн символӗсем, U+0000 номерлинчен пуҫласа U+007F таран (пӗр байт йышӑнакан аслӑ битри нульпе), UTF-8 кодлӑхра пӗтӗмпех US-ASCII 7-битлӑ битлӑ кодлӑхрипе пӗрешкел.
2. Пӗрремӗш тапхӑрта палӑртнӑ пӗрремӗш октетӑн аслӑ бичӗсене кирлӗ чухлӗ октетпа килӗшӳллӗн йӗркелемелле:
- 0xxxxxxxxx — кодлама пӗр октет кирлӗ пулсан;
- 110xxxxxx — кодлама икӗ октет кирлӗ пулсан;
- 1110xxxxxx — кодлама виҫӗ октет кирлӗ пулсан;
- 11110xxx — кодлама тӑватӑ октет кирлӗ пулсан.
Кодламашкӑн пӗр октетран ытларах кирлӗ пулсан, 2-4 октетсенче икӗ аслӑ битне яланах 102 (10xxxxxxxxx) пек палӑртаҫҫӗ. Ҫакӑ юхӑмри пӗрремӗш октета ҫӑмӑллӑнах уйӑрма май парать — унӑн аслӑ бичӗсем нихӑҫан та 102 танлашмаҫҫӗ.
| Октетсен шучӗ | Пӗлтерӗшлӗ бит | Шаблон |
|---|---|---|
| 1 | 7 | 0xxxxxxx
|
| 2 | 11 | 110xxxxx 10xxxxxx
|
| 3 | 16 | 1110xxxx 10xxxxxx 10xxxxxx
|
| 4 | 21 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
3. Юникод символӗн номерне иккӗлле кӑтартӑвӗпе килӗшӳллӗн октетсен пӗлтерӗшлӗ бичӗсене вырнаҫтармалла. Символ номерӗн кӗҫӗн бичӗсенчен тултарма пуҫламалла, вӗсене юлашки октетӑн кӗҫӗн бичӗсене вырнаҫтарса пырса сылтӑмран сулахаялла пӗрремӗш октета ҫити кӗртсе тухмалла. Пӗрремӗш октетри пушӑ битсене, тултармасӑр юлнӑскерсене, нульсем ҫрса тухмалла.
Кодланин тӗслӗхӗсем
| Символ | Символӑн иккӗллӗ кочӗ | UTF-8 иккӗлле кӑтартнинче | UTF-8 вунултӑлла кӑтартнинче | |
|---|---|---|---|---|
| $ | U+0024
|
0100100
|
00100100
|
24
|
| ¢ | U+00A2
|
10100010
|
11000010 10100010
|
C2 A2
|
| € | U+20AC
|
100000 10101100
|
11100010 10000010 10101100
|
E2 82 AC
|
| 𐍈 | U+10348
|
1 00000011 01001000
|
11110000 10010000 10001101 10001000
|
F0 90 8D 88
|
UTF-8 маркерӗ
Файл е юхӑм Юникод символлӑ пулнине палӑртма файл е юхӑм пуҫламӑшӗнче йӗркепе вырнаҫтарнӑ маркера (акăл. Byte order mark, BOM) кӗртсе лартма пултараҫҫӗ, UTF-8 кодлӑхпа кодланӑ пулсан вӑл виҫӗ байт хурмине йышӑнать: EF BB BF16.
| 1-мӗш байт | 2-мӗш байт | 3-мӗш байт | |
|---|---|---|---|
| Иккӗлле код | 1110 1111 |
1011 1011 |
1011 1111
|
| Вунултӑлла код | EF
|
BB
|
BF
|
Пиллӗкмӗш тата улттӑмӗш байтсем
Чи малтанах UTF-8 кодлӑх пӗр символа кодлама ултӑ байт таран усӑ курма ирӗк панӑ, анчах та 2003 ҫулхи чӳк уйӑхӗнче RFC 3629 стандарт пиллӗкмӗш тата улттӑмӗш байтсемпе усӑ курма чарнӑ, кодлакан символсен диапазонне ҫапла май U+10FFFF символпа чикӗленӗ. Ҫакна UTF-16 кодлӑхпа пӗр-пӗрне тивӗҫтермешкӗн май туса парас тӗллевпе тунӑ.
Декодланӑ чухне пулма пултаракан йӑнӑшӗсем
Байтсен йӗрки яланах юрӑхлӑ пулма пултараймасть. UTF-8 декодерӗн ҫакӑн пек йӑнӑшсене ӑнланмалла, вӗсене тӗрӗс палласа илме пӗлмелле:
- Юрӑхсӑр байт.
- Малалли байтра (10xxxxxx) пуҫламӑш байт ҫук.
- Малалли байтра (10xxxxxx) кирлӗ чухлӗ байт ҫукки — сӑмахран, 1110xxxx хыҫҫӑн икӗ байт пулмасан).
- Йӗрке символ варринче татӑлать.
- Экономлӑ мар кодлани — сӑмахран, символа икӗ байтпа та май пур чухне виҫӗ байтпа кодлани. (UTF-8 стандартлӑ мар вариант пур, вӑл 0 кодлӑ символа 1100.0000 1000.0000 кодпа палӑртать, ҫапла май ӑна йӗрке вӗҫӗнчи символӑн 0000.0000 кодӗнчен уйӑрать.)
- Юраман код позицине (тӗслӗхрен, UTF-16-ри суррогатлӑ мӑшӑрсен символӗсем) декодланакан байтсен йӗрки.
Ӑнлантарусем
Каҫӑсем
- UTF-8 encoding table and Unicode characters
- UTF-8: Кодирование и декодирование (выр.)
- UTF-8, UTF-16, UTF-32 & BOM — Вопросы и ответы (выр.)
- Compatibility Encoding Scheme for UTF-16: 8-Bit (CESU-8)
- Unicode стандартӑн тулли описанийӗ (выр.)
- UTF-8 Everywhere Manifesto
- RFC-3629 «UTF-8, a transformation format of ISO 10646»
| Ку статьяна РУВИКИН Вырӑс уйрӑмӗнчи UTF-8 статьяна чӑвашла куҫарса хатӗрленӗ. ' |