UTF-8 (Unicode Transformation Format 8-bit) er en tabsfri indkodning af Unicode-tegnsættet. Den blev udviklet af Ken Thompson og Rob Pike den 2. september 1992 i New Jersey, USA.

UTF-8 anvender grupper af 8-bit bytes til at repræsentere Unicode-standarden for verdens mange forskellige alfabeter. UTF-8 er især anvendelig ved transport af e-post i 8-bits postsystemer.

Den bruger 1 – 6 bytes (eller 8 til 48 bit) per tegn – afhængig af Unicode-symbolet. Eksempelvis kræves kun én byte for at kunne kode alle 128 ASCII-tegn i Unicode intervallet: U+0000 til U+007F.

UTF-8 er i RFC 3629 (2003) blevet begrænset til 4 byte sekvenser, da dette er nok til at indkode hele unicode området fra U+0000 til U+10FFFF.

Indkodning

Tegn i intervallet U+0000 til U+007F, dvs 7-bit ASCII indkodes uændret. Andre tegn indkodes ved at bruge 2 til 4 bytes, som alle er større end 7F.

Unicode interval
hexadecimal
Bit værdi
binær
UTF-8
binær
Noter
000000–00007F
128 tegn
0zzzzzzz 0zzzzzzz 7-bits ASCII område; byte begynder med en 0-bit
syv z syv z
000080–0007FF
1920 tegn
00000yyy yyzzzzzz 110yyyyy 10zzzzzz Første byte begynder med 110, den næste byte begynder med 10.
tre y; to y, seks z fem y; seks z
000800–00FFFF
63488 tegn
xxxxyyyy yyzzzzzz 1110xxxx 10yyyyyy 10zzzzzz Første byte begynder med 1110, de efterfølgende bytes begynder med 10.
fire x,fire y; to y,seks z fire x; seks y; seks z
010000–1FFFFF
2.031.616 tegn
000vvvxx xxxxyyyy yyzzzzzz 11110vvv 10xxxxxx 10yyyyyy 10zzzzzz Første byte begynder med 11110, de efterfølgende bytes begynder med 10.
tre v, to x; fire x, fire y; to y, seks z tre v; seks x; seks y; seks z
00200000–03FFFFFF
65.011.712 tegn
000000uu vvvvvvxx xxxxyyyy yyzzzzzz 111110uu 10vvvvvv 10xxxxxx 10yyyyyy 10zzzzzz Første byte begynder med 111110, de efterfølgende bytes begynder med 10.
to u, seks v, to x; fire x, fire y; to y, seks z to u, seks v; seks x; seks y; seks z
04000000–7FFFFFFF
1.073.741.824 tegn
0tuuuuuu vvvvvvxx xxxxyyyy yyzzzzzz 1111110t 10uuuuuu 10vvvvvv 10xxxxxx 10yyyyyy 10zzzzzz Første byte begynder med 1111110, de efterfølgende bytes begynder med 10.
et t, seks u, seks v, to x; fire x, fire y; to y, seks z et t, seks u, seks v; seks x; seks y; seks z

Da unicode er begrænset til U+10FFFF stopper standarden (RFC 3629) i dag ved fire byte sekvenser, selvom længere sekvenser tidligere har været defineret.

Følgende byteværdier kan således ikke forekomme i en UTF-8 streng i henhold til standarden

Værdi (binær) Værdi (hexadecimal) Noter
1100000x C0, C1 Forkert indkodning af værdier mindre end 7F. Byten indikerer starten af en 2 byte sekvens, men værdien er mindre end 7F.
1111111x FE, FF Ulovlig: start byte for en 7/8 byte sekvens.
111110xx
1111110x
F8, F9, FA, FB, FC, FD Fjernet af RFC 3629: start byte for en 5/6 byte sekvens.
11110101
1111011x
F5, F6, F7 Fjernet af RFC 3629: start byte for værdier mellem 10FFFF og 1FFFFF.

Fordele og ulemper

Generelle fordele

Generelle ulemper

Fordele sammenlignet med UTF-16

Ulemper sammenlignet med UTF-16

Eksterne henvisninger

ProgrammeringSpire
Denne artikel om datalogi eller et datalogi-relateret emne er en spire som bør udbygges. Du er velkommen til at hjælpe Wikipedia ved at udvide den.