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.
Codepoint Bereik
Benodigde Bytes
Binaire structuur
1110xxxx 10xxxxxx 10xxxxxx
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:
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.
"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:
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:
Verwijder de headers (1110, 10, 10):
Zet om naar hexadecimaal: U+20AC (euro-teken β¬).
Last updated 3 months ago