UTF-8 (Unicode Transformation Format 8-bit) er en tabsfri indkodning af Unicode-tegnsættet. Den blev udviklet af Ken Thompson og 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
- UTF-8 er en ægte udvidelse af ASCII standarden, hvilket betyder at en ASCII tekst ikke skal konverteres men også er en UTF-8 tekst.
- Det er forholdsvis nemt at identificere en UTF-8 tekst. Sandsynligheden for at en tekst indkodet i en anden 8-bits standard (f.eks. ISO 8859) bliver forvekslet med en UTF-8 streng er ret lille.
Generelle ulemper
- En dårlig implementering kan acceptere ulovlige indkodninger og konvertere dem til korrekt indkodning af den samme unicode tekst og dermed forvanske strenge i andre indkodninger.
Fordele sammenlignet med UTF-16
- Bytes med værdien 0 vil kun forekomme i en UTF-8 tekst, hvis unicode tegnet U+0000 indkodes. Dette er en fordel i programmer, som benytter en 0 byte som strengterminator.
- Tekster som primært er skrevet i ASCII (f.eks. normale vesteuropæiske tekster) vil være ca. halv størrelse i UTF-8, da langt de fleste tegn kan indkodes i en byte mod to i UTF-16.
Ulemper sammenlignet med UTF-16
- Tekster der benytter tegn større end U+0800, f.eks. kinesiske og japanske tekster, vil fylde op til en halv gang mere i UTF-8. Dette modvirkes til dels af at mellemrum, tegn, linieskift og lignende kan indkodes i én byte i UTF-8.
Eksterne henvisninger
- UTF-8 and Unicode FAQ for Unix/Linux
Spire 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. |
wikipedia, dansk, wiki, bog, bøger, bibliotek, artikel, læs, download, gratis, gratis download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, billede, musik, sang, film, bog, spil, spil, mobile, Phone, Android, iOS, Apple, mobiltelefon, Samsung, iPhone, Xiomi, Xiaomi, Redmi, Honor, Oppo, Nokia, sonya, mi, PC, web, computer