Unicode
Je kunt bepalen hoeveel bytes een karakter nodig heeft in UTF-8, UTF-16, en UTF-32 op basis van de Unicode codepoint.
Wat is een Unicode codepoint?
Een codepoint is een unieke numerieke waarde die een specifiek karakter in de Unicode-standaard vertegenwoordigt. Codepoints worden genoteerd in de vorm U+XXXX
, waarbij XXXX
de hexadecimale waarde van het karakter is.
Voorbeeld codepoints:
De letter A heeft codepoint
U+0041
.De letter Γ© heeft codepoint
U+00E9
.Het euro-teken β¬ heeft codepoint
U+20AC
.De emoji π heeft codepoint
U+1F603
.
Elke Unicode-codepoint wordt vervolgens omgezet naar een binaire representatie in een bepaalde encoding zoals UTF-8, UTF-16 of UTF-32.
Hoe werkt UTF-8?
UTF-8 is een variabele-lengte encoding, wat betekent dat een karakter tussen 1 en 4 bytes kan gebruiken, afhankelijk van de Unicode codepoint.
U+0000 β U+007F
1 byte
0xxxxxxx
U+0080 β U+07FF
2 bytes
110xxxxx 10xxxxxx
U+0800 β U+FFFF
3 bytes
1110xxxx 10xxxxxx 10xxxxxx
U+10000 β U+10FFFF
4 bytes
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Hoe wordt een Unicode codepoint omgezet naar UTF-8?
De omzetting van een Unicode codepoint naar UTF-8 gebeurt via een set regels gebaseerd op het binaire patroon:
Stap 1: Codepoint in binair omzetten
Eerst wordt de Unicode codepoint omgezet naar een binaire waarde.
Stap 2: Kijken naar het bereik van de codepoint
Afhankelijk van de grootte van de codepoint, bepaalt men hoeveel bytes nodig zijn (zie tabel hierboven).
Stap 3: Bytes invullen in het juiste patroon
De binaire waarde wordt verdeeld over het juiste aantal bytes en ingevuld in het patroon:
1 byte:
0xxxxxxx
2 bytes:
110xxxxx 10xxxxxx
3 bytes:
1110xxxx 10xxxxxx 10xxxxxx
4 bytes:
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
Voorbeeld: Om het karakter β¬
(U+20AC) om te zetten naar UTF-8:
U+20AC
=0010 0000 1010 1100
(binaire representatie)Valt in het 3-byte bereik (U+0800 β U+FFFF)
Vul in het patroon
1110xxxx 10xxxxxx 10xxxxxx
:11100010 10000010 10101100
UTF-8 representatie =
E2 82 AC
(hexadecimaal)
Hoeveel bytes gebruikt een karakter?
Je kunt de codepoint van een karakter controleren en vergelijken met de bovenstaande ranges om te bepalen hoeveel bytes er nodig zijn.
Voorbeelden
"A" (U+0041) β valt in U+0000 β U+007F β 1 byte
"Γ©" (U+00E9) β valt in U+0080 β U+07FF β 2 bytes
"β¬" (U+20AC) β valt in U+0800 β U+FFFF β 3 bytes
"π" (U+1F603) β valt in U+10000 β U+10FFFF β 4 bytes
Hoe werkt dit voor UTF-16 en UTF-32?
UTF-16 gebruikt 2 of 4 bytes per karakter:
U+0000 β U+FFFF β 2 bytes
U+10000 β U+10FFFF β 4 bytes (gebruik van surrogate pairs)
UTF-32 gebruikt altijd 4 bytes per karakter, ongeacht de codepoint.
Hoe wordt UTF-8 omgezet naar een Unicode codepoint?
De omzetting van een UTF-8 bytevolgorde terug naar een Unicode codepoint gebeurt in omgekeerde stappen:
Stap 1: Bepaal het aantal bytes
Het eerste byte geeft aan hoeveel bytes het karakter gebruikt:
0xxxxxxx
β 1 byte110xxxxx
β 2 bytes1110xxxx
β 3 bytes11110xxx
β 4 bytes
Stap 2: Verwijder de UTF-8 headers
De extra bits (zoals 110
, 1110
, 11110
) worden verwijderd en de resterende bits worden samengevoegd.
Stap 3: Omzetten naar hexadecimaal
Het binaire getal wordt omgezet naar een decimale Unicode codepoint.
Voorbeeld: Om E2 82 AC
terug om te zetten naar een Unicode codepoint:
E2 82 AC in binair:
E2
β11100010
82
β10000010
AC
β10101100
Verwijder de headers (
1110
,10
,10
):0010 0000 1010 1100
Zet om naar hexadecimaal: U+20AC (euro-teken
β¬
).
Last updated