Erinevus UTF-8 ja UTF-16 vahel

UTF-8 vs UTF-16

UTF tähistab Unicode'i teisendusvormingut. See on standardirühm Unicode'i märgikomplekti samaväärse kahendväärtuse kodeerimiseks. UTF töötati välja nii, et kasutajatel on standardiseeritud vahendid tähemärkide kodeerimiseks minimaalse ruumiga. UTF-8 ja UTF 16 on ainult kaks kodeerimisele kehtestatud standarditest. Need erinevad ainult selle poolest, kui palju baiti nad iga märgi kodeerimiseks kasutavad. Kuna mõlemad on muutuva laiusega kodeeringud, saavad nad andmete kodeerimiseks kasutada kuni nelja baiti, kuid kui see on minimaalne, kasutab UTF-8 ainult 1 baiti (8 bitti) ja UTF-16 kasutab 2 baiti (16 bitti). See mõjutab kodeeritud failide suurust. Ainult ASCII märkide kasutamisel oleks UTF-16 kodeeritud fail umbes kaks korda suurem kui sama fail, mis on kodeeritud UTF-8-ga.

UTF-8 peamine eelis on see, et see ühildub tagasi ASCII-ga. ASCII märgistik on fikseeritud laiusega ja kasutab ainult ühte baiti. UTF-8-ga ainult ASCII-tähemärke kasutava faili kodeerimisel oleks saadud fail identne ASCII-ga kodeeritud failiga. UTF-16 kasutamisel pole see võimalik, kuna iga märk oleks kahe baiti pikk. Pärandtarkvara, mis pole Unicode'i teadlik, ei saaks UTF-16 faili avada isegi siis, kui sellel oleks ainult ASCII-tähemärgid.

UTF-8 on baitidele orienteeritud vorming ja seetõttu pole tal probleeme baitidele orienteeritud võrkude ega failiga. UTF-16 seevastu ei ole baitidele orienteeritud ja baitidele orienteeritud võrkudega töötamiseks tuleb luua baitide järjekord. UTF-8 on parem ka failidest või voogu rikkuvatest vigadest toibumisel, kuna see võib ikkagi järgmise rikutud baidi dekodeerida. UTF-16 teeb täpselt sama asja, kui mõned baitid on rikutud, kuid probleem peitub mõne baiti kadumisel. Kaotatud baidi võib segada järgmisi baitikombinatsioone ja lõpptulemus läheks valeks.

Kokkuvõte:
1. Märkide kodeerimiseks kasutatakse nii UTF-8 kui ka UTF-16
2. UTF-8 kasutab tähemärkide kodeerimisel vähemalt baiti, UTF-16 aga kahte
3. UTF-8 kodeeritud fail kipub olema väiksem kui UTF-16 kodeeritud fail
4. UTF-8 ühildub ASCII-ga, UTF-16 ei ühildu ASCII-ga
5. UTF-8 on baitidele orienteeritud, UTF-16 aga mitte
6. UTF-8 on vigadest paranemisel parem kui UTF-16