Unicode: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
k →‎Sorteren: UTF-16 sorteert prima binnen hetzelfde plane, en ook tussen non-BMP-planes
Regel 71:
 
== Codering ==
De Unicodestandaard kent aan elk teken een nummer toe, [[codepunt]] genoemd, dat geschreven wordt als U+''xxxx, U+xxxxx of U+xxxxxx'', waarin de ''x'''en de 4 tot 6 [[Hexadecimaal|hexadecimale]] cijfers van het codepunt zijn (voorloopnullen worden dus in ieder geval toegevoegd om aan te vullen totminimaal vier, hexadecimalezo cijfers,nodig extramet voorloopnullen, zijnmaximaal optioneelzes). De codepunten die gekoppeld zijn of kunnen worden aan een teken (de zogenaamde ''Unicode scalaire waarden'') lopen van U+0000 (0) tot en met U+D7FF (55.295) en van U+E000 (57.344) tot en met U+10FFFF (1.114.111). Dat zijn 55.296 + 8.192 = 63.488 (0xF800) tekens met een codepunt tot en met twee bytes, plus 1.048.576 (0x100000) andere, in totaal 1.112.064 (0x10F800). De onderbreking bestaat uit 2048 (0x800) codepunten die ten behoeve van gunstige eigenschappen van de UTF-16-codering niet gebruikt worden; ze worden ''surrogaatcodepunten'' genoemd.
 
Unicode biedt verschillende coderingsvormen (''encoding forms'') om de scalaire waarden te representeren, onder andere:
* [[UTF-32]]: Een code-eenheid (''code unit'') heeft 32 bits. Tekens worden opgeslagen in één code-eenheid. Een nadeel is dat ook kleine scalaire waarden vier bytes vergen.
* [[UTF-16]]: Een code-eenheid heeft 16 bits. Tekens worden opgeslagen in een of twee code-eenheden, de lagere in een, de hogere in twee. UTF-16 is een uitbreiding van [[UCS-2]], de codering van Unicode t/m versie 1.1. Voor de tekens die worden opgeslagen in twee code-eenheden worden alleen de 2048 16-bits getallen gebruikt die niet afzonderlijk worden gebruikt voor de opslag van een teken. Daardoor blijven er 63.488 16-bits getallen over voor opslag van een teken in één code-eenheid. Van de genoemde 2048 16-bits getallen worden er 1024 uitsluitend gebruikt als eerste van de twee 16-bits getallen die een teken representeren, en 1024 uitsluitend als tweede, wat 1.048.576 combinaties oplevert, voor even zoveel scalaire waarden. Zo'n combinatie wordt een ''surrogaatpaar'' genoemd.
Regel 86:
|-
|U+0000..U+007F<br />(128 = 0x80 ASCII-equivalenten)
|00000000 00000000<br />00000000 0aaaaaaa0''aaaaaaa''
|00000000 0aaaaaaa0''aaaaaaa''
|0''aaaaaaa''
|0aaaaaaa
|
|-
|U+0080..U+07FF<br />(1.920 = 0x780 scalaire waarden)
|00000000 00000000<br />00000bbb00000''bbb aaaaaaaa''
|00000bbb00000''bbb aaaaaaaa''
|110''bbbaa'' 10''aaaaaa''
|110bbbaa 10aaaaaa
|
|-
|U+0800..U+D7FF en U+E000..U+FFFF<br />(61.440 = 0xF000 scalaire waarden, de resterende in het [[Basic Multilingual Plane]])
|00000000 00000000 <br />''bbbbbbbb aaaaaaaa''
|''bbbbbbbb aaaaaaaa''
|1110''bbbb'' 10''bbbbaa'' 10''aaaaaa''
|1110bbbb 10bbbbaa 10aaaaaa
|
|-
|U+010000..U+10FFFF<br />(1.048.576 = 0x100000 supplementaire codepunten)
|00000000 000ccccc000''ccccc <br />bbbbbbbb aaaaaaaa''
|110110dd110110''dd ddbbbbbb'' <br />110111bb110111''bb aaaaaaaa''
|11110''ccc'' 10''ccbbbb'' 10''bbbbaa'' 10''aaaaaa''
|11110ccc 10ccbbbb 10bbbbaa 10aaaaaa
|''dddd'' = ''ccccc'' - 1
|}