Codes groter is dan 127 worden gecodeerd in meerdere bytes.
Aan de andere kant, als onze byte negatief is, betekent dit dat er waarschijnlijk een UTF-8 gecodeerde tekens waarvan de code groter is dan 127 is.
Dit betekent ook dat het moet worden gevolgd door ten minste één negatiever byte.
UTF-8 is ontworpen voor het coderen van elk Unicode-teken met behulp van de minder ruimte mogelijk.
Als het mogelijk is voor het coderen van een Unicode-teken binnen slechts 2 bytes is, gebruiken we niet meer dan die 2 bytes. Wij zullen 4 bytes alleen gebruiken als absoluut vereist.
Wij moeten een methode te raden hoeveel bytes is gecodeerd een teken.
We deze informatie uit de eerste negatieve byte kan halen, door te tellen hoeveel van de laatste stukjes van onze byte zijn ingesteld op een:
110xxxxx: 2 laatste bits ingesteld op 1, betekent ons karakter is gecodeerd in 2 bytes.
We hebben om te lezen 1 meer negatieve byte.
1110xxxx: 3 laatste bits ingesteld op 1, betekent ons karakter is gecodeerd in 3 bytes.
Wij hebben om 2 meer negatieve bytes te lezen.
11110xxx: 4 laatste bits ingesteld op 1, betekent ons karakter is gecodeerd in 4 bytes.
Wij hebben om 3 meer negatieve bytes te lezen.
De volgende extra negatieve byte (s) alle hebben de 8e bit ingesteld op 1 (minteken) en de 7e bit ingesteld op 0: 10yyyyyy
Als de volgende extra byte (s) positieve zijn of hun 7de bit ingesteld op 1, is betekent dit dat de UTF-8 gecodeerd teken ongeldig. Onze applicatie absoluut moet detecteren misvormde codering.
Codes van 128 2047 worden gecodeerd in 2 bytes.
(van 0x0100 naar 0x7FFF)
Tekens worden gecodeerd in twee bytes zijn als dat:
110xxxxx, 10yyyyyy
Om te decoderen, wij moeten onze 5 x-bits met onze 6 groep y-stukjes: xxxxxyyyyyy