UTF-8
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
- 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
| 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. |
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.