Unicode

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken

Unicode is een internationale standaard voor de codering van binaire codes naar grafische tekens en symbolen, vergelijkbaar met de ASCII-standaard. De standaard voorziet alle tekens en symbolen ("karakters") van alle geschreven talen van een nummer. De standaard wordt onderhouden door het Unicode Consortium. In tegenstelling tot ASCII (alleen Engels) of Latin-1 (alleen West-Europese talen) heeft Unicode als doel alle gebruikte schriften (zoals het Griekse alfabet en Chinese karakters) te ondersteunen. De standaard bevat momenteel ruim 100.000 gestandaardiseerde tekens en ongeveer 900.000 voor toekomstig gebruik gereserveerde codes. De Unicode standaard schrijft niets voor over de visuele representatie van een karakter.

Unicode logo

Unicode stelt geen beperkingen aan het aantal talen dat in één enkel document gebruikt kan worden. Naast letters en cijfers bevat Unicode ook veel symbolen, zoals: kruisen, wiskundige tekens, muntsymbolen enzovoort. Unicode bevat geen symbolen die niet in een schrift worden gebruikt, zoals verkeersborden. Enkele symbolen in Unicode hebben alleen een betekenis in druk- of zettechnische zin, zoals: de niet-afbrekende spatie (NBSP).

Een neveneffect bij omzetting van gegevens die anders gecodeerd waren, is dat bij sorteren op numerieke volgorde een ander resultaat (space, numeric, uppercase, lowercase (SNUL)) dan bijvoorbeeld bij EBCDIC (space, lowercase, uppercase, numeric (=SLUN)) verkregen wordt, omdat de tekens anders gerangschikt zijn.

Geschiedenis[bewerken]

De eerste computers werkten alleen met getallen, bij latere computers ontstond ook de behoefte om bij uitvoer bij getallen aan te geven wat zij voorstelden, weer later werden computers voor tekstverwerking en gegevensopslag ingezet. Hierbij worden tekens intern door getallen gerepresenteerd. Aanvankelijk hadden veel computerfabrikanten hier hun eigen tekenverzameling en -representatie voor. Veel systemen maakten bijvoorbeeld geen onderscheid tussen hoofd- en kleine letters. Later gingen veel fabrikanten over op ASCII, maar ook andere codes bleven in gebruik, bijvoorbeeld EBCDIC.

ASCII, een 8-bits code (8-bits zijn samen 1 byte), omvat maar een beperkt aantal tekens, alleen het Latijnse alfabet en geen diakritische tekens. Het lag daarom voor de hand ASCII uit te breiden tot extended ASCII met een achtste bit, maar er was niet genoeg ruimte voor alle tekens in alle talen met het Latijnse schrift. Daarom kregen veel talen hun eigen variant van extended ASCII, waarbij afzonderlijk moet worden aangegeven welke variant gebruikt werd. Hier is geen standaardmethode voor, zo gebeurt dit in HTML anders dan in e-mail, en in platte tekst kan het al helemaal niet, wat veel spraakverwarring oplevert.

Voor veel schriften, zoals het Chinese, Arabische en Japanse schrift, zijn 256 tekens niet voldoende. Voor deze uitgebreidere tekenverzamelingen worden traditioneel al andere coderingen gebruikt, die ruimte voor meer tekens bevatten.

Zelfs met al deze verschillende coderingen voor de verschillende talen was het nog niet mogelijk om over een vreemde taal te schrijven. Wanneer men in een Chinese tekst over het Arabisch wilde schrijven, kon men dat niet in de standaard-Chinese codering: de Arabische letters zijn daarin namelijk niet opgenomen. Unicode en de daarvoor beschikbare coderingen bieden voor al dit soort problemen uitkomst.

Versies[bewerken]

De Unicodestandaard is ontstaan op initiatief van een aantal organisaties die orde wilden scheppen in de chaos van tekencoderingen. In 1991 lanceerden zij hun eerste standaard: Unicode 1.0.

Unicode is tweemaal uitgebreid (1.0.1 en 1.1) aan de op dat moment actuele ISO-10646. Unicode 1.1 had ruimte voor 65.536 (= 216) tekens. Dit aantal bleek echter te weinig om alle schriften van de wereld te kunnen ondersteunen. Zo bestaat alleen het Chinese schrift al uit zo'n 25.000 tekens.

In Unicode 2.0 werd het aantal codes uitgebreid naar ruim een miljoen, 1.114.112 om precies te zijn (220 + 216), waarvan overigens een aantal niet gebruikt kunnen worden, bijvoorbeeld ten behoeve van de UTF-16-codering.

Versie Datum Aantal tekens ISBN Opmerking
1.0 oktober 1991 7.161 ISBN 0-201-56788-1 Eerste versie met het Arabisch alfabet, Armeens alfabet, Bengaals alfabet, Bopomofo, Cyrillisch alfabet, Devanagari, Georgisch alfabet, Grieks alfabet met Koptisch alfabet, Gujarati, Gurmukhi, Hangul, Hebreeuws alfabet, Hiragana, Kannada-schrift, Katakana, Laotiaans alfabet, Latijns alfabet, Malayalam-schrift, Odia-schrift, Tamil-schrift, Telugu-schrift, Thais alfabet en Tibetaans alfabet.
1.0.1 juni 1992 28.359 ISBN 0-201-56788-1 Aantal tekens toegevoegd om te voldoen aan ISO/IEC 10646-1. Dit zijn de "CJK"-tekens voor de Chinese, Japanse en Koreaanse schriften.
1.1 juni 1993 34.233 Nieuwe tekens toegevoegd om te voldoen aan de bijgewerkte ISO/IEC 10646-1. Dit houdt meer Hangul-tekens in.
2.0 juli 1996 38.950 ISBN 0-201-48345-9 Eerste versie van Unicode die meer dan 65.536 tekens ondersteunt. De Hangul-tekens verwijderd en een grotere reeks opnieuw toegevoegd op een andere locatie.
2.1 mei 1998 38.952 Euroteken toegevoegd
3.0 september 1999 49.259 ISBN 0-201-61633-5 O.a. het Cherokee-alfabet, Khmer-alfabet, Mongools alfabet, Birmees alfabet, Ogham-alfabet, ...
3.1 maart 2001 94.205 Zeer veel Chinese (CJK) karakters toegevoegd
3.2 maart 2002 95.221 Enkele Filipijnse schriften toegevoegd (onder andere Baybayin)
4.0 april 2003 96.447 ISBN 0-321-18578-1 Hexagram-symbolen, Lineair B, ...
4.1 maart 2005 97.720 O.a. Tifinagh toegevoegd
5.0 juli 2006 99.089 ISBN 0-321-48091-0 Balinees alfabet, Spijkerschrift, N'Ko, ... toegevoegd
5.1 april 2008 100.713 O.a. Sundanees alfabet, Saurashtra alfabet, ... en ook tekens voor Mahjong en Domino en de Schijf van Phaistos
5.2 oktober 2009 107.296 ISBN 978-1-936213-00-9 O.a. Avestisch alfabet, Bamum-alfabet, ...
6.0 oktober 2010 109.242 ISBN 978-1936213-01-6 2088 nieuwe karakters, van onder andere Batak-alfabet, Brahmi, Mandaïsch alfabet en een aantal symbolen en emoticons
6.1 januari 2012 110.181 onder andere Chakma-alfabet, Sharada-alfabet, ... toegevoegd
6.2 beta 110.182 Het nieuwe teken van de Turkse lira toegevoegd

Codering[bewerken]

De Unicodestandaard kent aan elk teken een volgnummer toe, dat geschreven wordt als U+xxxx, waarin xxxx de 4- tot 6-cijferige hexadecimale waarde van het volgnummer is. Daarnaast biedt Unicode een aantal mogelijke coderingen hiervoor, dat wil zeggen hoe deze waarden gerepresenteerd kunnen worden:

  • UTF-32: Aangezien de grootst mogelijke waarde 21 bits beslaat, ligt het voor de hand om elke waarde als 32-bits getal op te slaan. Een nadeel is dat ASCII-bestanden in Unicode daardoor 4 keer zo groot worden.
  • UTF-16: Tekens worden opgeslagen als een of twee 16-bits getallen, afhankelijk van de hun toegekende waarde. UTF-16 is een uitbreiding van UCS-2, de codering van Unicode t/m versie 1.1. De 2048 codes U+D800 t/m U+DFFF kunnen niet in UTF-16 worden gerepresenteerd, en worden daarom niet gebruikt.
  • UTF-8: Tekens worden opgeslagen als een tot vier 8-bits getallen, afhankelijk van de hun toegekende waarde. In deze codering blijven ASCII-teksten onveranderd.

Aangezien computers getallen die meerdere bytes beslaan op verschillende wijzen kunnen opslaan, zijn er van UTF-32 en UTF-16 twee varianten mogelijk, nl. big-endian, waarbij het meest significante byte zich op het laagste adres bevindt, en little-endian, met het minst significante byte eerst.

De 256 codes van ISO-8859-1 zijn in Unicode onder dezelfde waarden opgenomen: U+0000 t/m U+00FF. De tweede 128 hiervan kunnen echter, ongeacht de gekozen codering, niet in één byte worden gerepresenteerd. Ook andere codepagina's van ISO 8859 vinden we in Unicode terug, waarbij de oorspronkelijke tekenvolgorde gehandhaafd is.

Schriften[bewerken]

Momenteel voorziet Unicode in tekens voor de onderstaande schriften:

Het aantal schriften wordt nog voortdurend uitgebreid. Ook veel historische schriften worden opgenomen.

Zie ook[bewerken]

Externe links[bewerken]