Delen via


Codepagina's

De meeste toepassingen die tegenwoordig zijn geschreven verwerken tekengegevens voornamelijk als Unicode-, met behulp van de UTF-16-codering. Veel oudere toepassingen blijven echter tekensets gebruiken op basis van codepagina's. Zelfs nieuwe toepassingen moeten soms met codepagina's werken, vaak om een van de volgende redenen:

  • Om te communiceren met verouderde toepassingen.
  • Als u wilt communiceren met oudere e-mail- en nieuwsservers, die mogelijk niet altijd Unicode ondersteunen.
  • Om te communiceren met de Windows-console voor verouderde doeleinden. (De console biedt wel ondersteuning voor Unicode, maar sommige verouderde opdrachtregeltoepassingshulpprogramma's zijn mogelijk niet.)

Notitie

Nieuwe Windows-toepassingen moeten gebruikmaken van Unicode- om inconsistenties van verschillende codepagina's te voorkomen en om de lokalisatie te vereenvoudigen.

 

Elke codepagina wordt vertegenwoordigd door een codepagina-id, bijvoorbeeld 1252, en wordt verwerkt door de Unicode- en tekenset-API-functies. Zie Code Page Identifiersvoor een lijst met ondersteunde codepagina-id's. De naslaginformatie 'Codepagina's' in het Microsoft Go Global Developer Center bevat volledige beschrijvingen van veel codepagina's.

Windows-codepagina's, ook wel 'ANSI-codepagina's' genoemd, zijn codepagina's waarvoor niet-ASCII-waarden (waarden groter dan 127) internationale tekens vertegenwoordigen. Deze codepagina's worden systeemeigen gebruikt in Windows Me en zijn ook beschikbaar in Windows NT en hoger.

Notitie

Oorspronkelijk werd de codepagina van Windows 1252, de codepagina die vaak wordt gebruikt voor Engelse en andere West-Europese talen, gebaseerd op een Amerikaans National Standards Institute (ANSI) concept. Dat concept werd uiteindelijk ISO 8859-1, maar Windows-codepagina 1252 werd geïmplementeerd voordat de standaard definitief werd, en is niet precies hetzelfde als ISO 8859-1.

 

Veel Windows API-functies hebben A-versies (ANSI) en W (wide, Unicode). De versie A verwerkt tekst op basis van Windows-codepagina's, terwijl de W-versie Unicode-tekst verwerkt. Zie Windows-gegevenstypen voor tekenreeksen en conventies voor functieprototypes.

Windows-codepagina's worden ook wel 'actieve codepagina's' of 'systeem-actieve codepagina's' genoemd. Een Windows-besturingssysteem heeft altijd één actieve Windows-codepagina. Alle ANSI-versies van API-functies de huidige actieve codepagina gebruiken.

Oem-codepagina's (Original Equipment Manufacturer) zijn codepagina's waarvoor niet-ASCII-waarden lijntekening en leestekens vertegenwoordigen. Deze codepagina's zijn oorspronkelijk gebruikt voor MS-DOS en worden nog steeds gebruikt voor consoletoepassingen. Ze worden ook gebruikt voor de niet-uitgebreide bestandsnamen in de bestandssystemen FAT12, FAT16 en FAT32, zoals beschreven in tekensets die worden gebruikt in bestandsnamen. De gebruikelijke OEM-codepagina voor Engels is codepagina 437.

Voor zowel Windows-codepagina's als OEM-codepagina's komen de codewaarden 0x00 tot 0x7F overeenkomen met de 7-bits ASCII-tekenset. Codewaarden 0x00 via 0x19 en 0x7F altijd gestandaardiseerde besturingstekens vertegenwoordigen en 0x20 via 0x7E gestandaardiseerde weergavebare tekens vertegenwoordigen. Tekens die worden vertegenwoordigd door de overige codes, 0x80 tot 0xff, variëren per tekensets. Elke tekenset bevat verschillende speciale tekens, meestal aangepast voor een taal of groep talen. Windows-codepagina 1252 en OEM-codepagina 437 worden over het algemeen gebruikt in de Verenigde Staten.

Naast Windows- en OEM-codepagina's kunnen uw toepassingen niet-systeemeigen codepagina's gebruiken. Voorbeelden zijn EBCDIC- en Macintosh-codepagina's.

Twee coderingen van Unicode (UTF-7 en UTF-8) worden geïmplementeerd als codepagina's. Net als andere codepagina's wordt elke pagina bekend door een numerieke id en kan deze worden verwerkt met veel van dezelfde Unicode- en tekenset-API-functies.

Codepagina's kunnen pagina's met één byte (SBCS) of dbcs-pagina's (double-byte character set). In SBCS-pagina's codeert elke byte rechtstreeks één teken, zodat het mogelijk is om exact 256 afzonderlijke tekens weer te geven (inclusief besturingstekens, letters, cijfers, leestekens, symbolen en dergelijke). DBCS-codepagina's worden gebruikt voor talen zoals Japans en Chinees. Op een dergelijke codepagina hebben sommige tekens twee-bytecoderingen met bepaalde bytewaarden (altijd waarden groter dan 127) die fungeren als 'leadbytes'. In plaats van tekens in eigen recht te coderen, kunnen potentiële bytes alleen worden toegewezen aan een teken in combinatie met een 'trail byte'.

Sommige verouderde protocollen vereisen het gebruik van SBCS- en DBCS-codepagina's. Elke SBCS-/DBCS-codepagina ondersteunt verschillende tekens, maar geen codepagina ondersteunt de volledige breedte van tekens die door Unicode worden geleverd. Elke SBCS-/DBCS-codepagina ondersteunt een andere subset, verschillend gecodeerd.

Notitie

Gegevens die van de ene SBCS- of DBCS-codepagina naar een andere worden geconverteerd, zijn beschadigd, omdat dezelfde gegevenswaarde op verschillende codepagina's een ander teken kan coderen. Gegevens die worden geconverteerd van Unicode naar SBCS of DBCS, zijn onderhevig aan gegevensverlies, omdat een bepaalde codepagina mogelijk niet elk teken kan vertegenwoordigen dat in die specifieke Unicode-gegevens wordt gebruikt.

 

Naast SBCS- en DBCS-codepagina's hebben uw toepassingen de codepagina's met meerdere tekenset 52936, 54936, 51949 en 5022x beschikbaar, die een benadering gebruiken die vergelijkbaar is met die voor een DBCS. Een codepagina met meerdere tekenset gaat echter verder dan twee bytecoderingen van sommige tekens. UTF-7 en UTF-8 gebruiken een vergelijkbare benadering om Unicode te coderen op basis van respectievelijk 7-bits en 8-bits bytes. Zie Unicode-voor meer informatie.

Met verschillende Unicode- en tekensetfuncties kunnen uw toepassingen codepagina's verwerken. Een toepassing kan de functies GetCPInfo en GetCPInfoEx gebruiken om informatie over een codepagina te verkrijgen. Deze informatie bevat het standaardteken dat wordt gebruikt wanneer een teken in een geconverteerde tekenreeks geen overeenkomende vermelding heeft op de codepagina.

Een toepassing kan de functies MultiByteToWideChar en WideCharToMultiByte gebruiken om te converteren tussen tekenreeksen op basis van Windows-codepagina's en Unicode-tekenreeksen. Hoewel hun namen verwijzen naar 'MultiByte', werken deze functies even goed met SBCS-, DBCS- en codepagina's met meerderebyte-tekenset.

Notitie

WideCharToMultiByte- kan bepaalde gegevens verliezen als de opgegeven codepagina niet alle tekens in een Unicode-tekenreeks kan vertegenwoordigen.

 

Uw toepassing kan converteren tussen Windows-codepagina's en OEM-codepagina's met behulp van de standaard C Runtime-bibliotheekfuncties. Het gebruik van deze functies vormt echter een risico op gegevensverlies, omdat de tekens die door elke codepagina kunnen worden weergegeven, niet exact overeenkomen.

Uw toepassingen kunnen ook de functie GetACP- aanroepen. Met deze functie wordt de id van de huidige Windows-codepagina (ANSI) opgehaald.

tekensets