Napišite program (npr. v C++), ki bo kodiral in dekodiral znake abecede Unicode v kodiranju UTF-8.
Znakov iz Unicode, ki jih UTF-8 kodira, je 1114111, tj. 10FFFF (hex), oz. max. 128 bitov. Pri tem kodi 0xFF in 0xFE nista dovoljeni in ob dekodiranju takšne kode izpišite opozorilo o napaki.
Predstavitev UTF-8 kode:
1) V kolikor je prvi bit 0, sledi sedem bitov za kodo (tj. enako prvim 128 kodam iz ASCII).
2) V kolikor je prvi bit 1, pomeni število vodilnih bitov 1 do prvega bita 0, dolžino kode v bajtih. Nato se kodirajo bolj obteženi biti kode, šele nato manj obteženi del, po spodnji tabeli:
| Unicode | Bajt 1 | Bajt 2 | Bajt 3 | Bajt 4 | Primer |
|---|---|---|---|---|---|
U+0000–U+007F |
0xxxxxxx |
‘$’ U+0024→ 00100100→ 0x24 |
|||
U+0080–U+07FF |
110yyyxx |
10xxxxxx |
‘¢’ U+00A2→ 11000010,10100010→ 0xC2,0xA2 |
||
U+0800–U+FFFF |
1110yyyy |
10yyyyxx |
10xxxxxx |
‘€’ U+20AC→ 11100010,10000010,10101100→ 0xE2,0x82,0xAC |
|
U+10000–U+10FFFF |
11110zzz |
10zzyyyy |
10yyyyxx |
10xxxxxx |
U+024B62→ 11110000,10100100,10101101,10100010→ 0xF0,0xA4,0xAD,0xA2 |
PRIMER (vnos črke v desetiškem številskem sestavu, izpis kode v binarnem)
Kodiranje
Vpišite Unicode znak: 65
UTF-8 koda Unicode je: 01000001
Dekodiranje
Vpišite UFT-8 kodo: 01000001
Koda predstavlja znak št.: 65