Delen via


Unicode

Unicode is een wereldwijde tekencoderingsstandaard. Het systeem maakt uitsluitend gebruik van Unicode voor teken- en tekenreeksmanipulatie. Raadpleeg De Unicode-standaardvoor een gedetailleerde beschrijving van alle aspecten van Unicode.

In vergelijking met oudere mechanismen voor het verwerken van teken- en tekenreeksgegevens vereenvoudigt Unicode de lokalisatie van software en verbetert meertalige tekstverwerking. Door Unicode te gebruiken om teken- en tekenreeksgegevens in uw toepassingen weer te geven, kunt u universele mogelijkheden voor gegevensuitwisseling inschakelen voor wereldwijde marketing, met behulp van één binair bestand voor elke mogelijke tekencode. Unicode doet het volgende:

  • Hiermee kunt u elke combinatie van tekens, die afkomstig zijn van elke combinatie van scripts en talen, naast elkaar in één document bestaan.
  • Definieert semantiek voor elk teken.
  • Standaardiseert het gedrag van scripts.
  • Biedt een standaard algoritme voor bidirectionele tekst.
  • Definieert kruistoewijzingen voor andere standaarden.
  • Definieert meerdere coderingen van de set met één teken: UTF-7, UTF-8, UTF-16 en UTF-32. De conversie van gegevens tussen deze coderingen is verliesloos.

Unicode ondersteunt talloze scripts die worden gebruikt door talen over de hele wereld, en ook een groot aantal technische symbolen en speciale tekens die worden gebruikt bij het publiceren. De ondersteunde scripts omvatten, maar zijn niet beperkt tot, Latijns, Grieks, Cyrillisch, Hebreeuws, Arabisch, Devanagari, Thai, Han, Hangul, Hiragana en Katakana. Ondersteunde talen zijn onder andere: Duits, Frans, Engels, Grieks, Russisch, Hebreeuws, Arabisch, Hindi, Thai, Chinees, Koreaans en Japans. Unicode kan momenteel de overgrote meerderheid van tekens in moderne computers over de hele wereld vertegenwoordigen en wordt nog steeds bijgewerkt om deze nog completer te maken.

Unicode-functies worden beschreven in Conventies voor functieprototypes. Deze functies maken gebruik van UTF-16-codering (breed teken), de meest voorkomende codering van Unicode en de codering die wordt gebruikt voor systeemeigen Unicode-codering op Windows-besturingssystemen. Elke codewaarde is 16 bits breed, in tegenstelling tot de oudere codepagina benadering van teken- en tekenreeksgegevens, die 8-bits codewaarden gebruikt. Met het gebruik van 16 bits kan de directe codering van 65.536 tekens worden toegestaan. In feite is het universum van symbolen die worden gebruikt om menselijke talen te transcriberen nog groter dan dat, en UTF-16 codepunten in het bereik U+D800 tot en met U+DFFF worden gebruikt om surrogaatparen te vormen, die 32-bits coderingen van aanvullende tekens vormen. Zie Surrogaten en Aanvullende tekens voor verdere discussie.

De Unicode-tekenset bevat talloze combinaties van tekens, zoals U+0308 (" ́"), een combinatie van dieresis of umlaut. Unicode kan vaak dezelfde glyph vertegenwoordigen in een 'samengesteld' of een ''ontcomposeerd'-formulier: de samengestelde vorm van 'Ä' is bijvoorbeeld het enige Unicode-codepunt 'Ä' (U+00C4), terwijl de uitgevouwen vorm 'A' + ' ́ (U+0041 U +0308) is. Unicode definieert geen samengesteld formulier voor elke glyph. De Vietnamese kleine letter o met omtrek en tilde ("ỗ") wordt bijvoorbeeld vertegenwoordigd door U+006f U+0302 U+0303 (o + Circumflex + Tilde). Zie Unicode-normalisatie gebruiken om tekenreeksen te vertegenwoordigenvoor meer informatie over het combineren van tekens en gerelateerde problemen.

Voor compatibiliteit met 8-bits en 7-bits omgevingen kan Unicode ook worden gecodeerd als UTF-8 en UTF-7. Hoewel unicode-functies in Windows UTF-16 gebruiken, is het ook mogelijk om te werken met gegevens die zijn gecodeerd in UTF-8 of UTF-7, die worden ondersteund in Windows als multibyte tekenset codepagina's.

Nieuwe Windows-toepassingen moeten UTF-16 gebruiken als hun interne gegevensweergave. Windows biedt ook uitgebreide ondersteuning voor codepagina's en gemengd gebruik in dezelfde toepassing is mogelijk. Zelfs nieuwe Unicode-toepassingen moeten soms werken met codepagina's. Redenen hiervoor worden besproken in codepagina's.

Een toepassing kan de functies MultiByteToWideChar en WideCharToMultiByte gebruiken om te converteren tussen tekenreeksen op basis van codepagina's en Unicode-tekenreeksen. Hoewel hun namen verwijzen naar 'MultiByte', werken deze functies even goed met single-byte character set (SBCS), double-byte character set (DBCS) en MBCS-codepagina's (Multibyte Character Set).

Normaal gesproken moet een Windows-toepassing intern UTF-16 gebruiken, waarbij alleen wordt geconverteerd als onderdeel van een 'thin layer' via de interface die een andere indeling moet gebruiken. Deze techniek beschermt tegen verlies en beschadiging van gegevens. Elke codepagina ondersteunt verschillende tekens, maar geen van deze tekens ondersteunt het volledige spectrum van tekens van Unicode. De meeste codepagina's ondersteunen verschillende subsets, verschillend gecodeerd. De codepagina's voor UTF-8 en UTF-7 zijn een uitzondering, omdat ze de volledige Unicode-tekenset ondersteunen en de conversie tussen deze coderingen en UTF-16 verliesloos is.

Gegevens die rechtstreeks worden geconverteerd van de codering die door de ene codepagina wordt gebruikt naar de codering die door een andere pagina wordt gebruikt, zijn beschadigd, omdat dezelfde gegevenswaarde op verschillende codepagina's een ander teken kan coderen. Zelfs wanneer uw toepassing zo dicht mogelijk bij de interface wordt geconverteerd, moet u zorgvuldig nadenken over het gegevensbereik dat moet worden verwerkt.

Gegevens die van Unicode naar een codepagina worden geconverteerd, zijn onderhevig aan gegevensverlies, omdat een bepaalde codepagina mogelijk niet elk teken kan vertegenwoordigen dat in die specifieke Unicode-gegevens wordt gebruikt. Houd er daarom rekening mee dat WideCharToMultiByte- bepaalde gegevens mogelijk kwijtraakt als de doelcodepagina niet alle tekens in de Unicode-tekenreeks kan vertegenwoordigen.

Bij het moderniseren van verouderde toepassingen op basis van codepagina's voor het gebruik van Unicode, kunt u algemene functies en de TEKST- macro gebruiken om één set bronnen te onderhouden waaruit twee versies van uw toepassing moeten worden gecompileerd. De ene versie ondersteunt Unicode en de andere versie werkt met Windows-codepagina's. Met dit mechanisme kunt u zelfs zeer grote toepassingen van Windows-codepagina's converteren naar Unicode terwijl u toepassingsbronnen onderhoudt die in alle fasen van de conversie kunnen worden gecompileerd, gebouwd en getest. Zie Conventies voor functieprototypesvoor meer informatie.

Unicode-tekens en tekenreeksen maken gebruik van gegevenstypen die verschillen van die voor op pagina's gebaseerde codetekens en tekenreeksen. Samen met een reeks macro's en naamconventies minimaliseert dit onderscheid de kans dat de twee typen tekengegevens per ongeluk worden gemengd. Het vereenvoudigt het controleren van compilertypen om ervoor te zorgen dat alleen Unicode-parameterwaarden worden gebruikt met functies die Unicode-tekenreeksen verwachten.

tekensets

sorteren

surrogaten en aanvullende tekens

Unicode-normalisatie gebruiken om tekenreeksen weer te geven