Dubbel-bytetekensets
Een dbcs-tekenset (double-byte character set), ook wel bekend als een uitgebreide 8-bits tekenset, is een uitgebreide single-byte character set (SBCS), geïmplementeerd als een codepagina. DBCSs zijn oorspronkelijk ontwikkeld om het SBCS-ontwerp uit te breiden voor het verwerken van talen zoals Japans en Chinees. Sommige tekens in een DBCS, inclusief de cijfers en letters die worden gebruikt voor het schrijven van Engels, hebben codewaarden met één byte. Andere tekens, zoals Chinese ideographs of Japanse kanji, hebben dubbele bytecodewaarden. Een DBCS kan overeenkomen met een Windows-codepagina of een OEM-codepagina. Een DBCS-codepagina kan ook een niet-systeemeigen codepagina bevatten, bijvoorbeeld een EBCDIC-codepagina. Zie codepagina'svoor definities van deze codepagina's.
Notitie
Nieuwe Windows-toepassingen moeten gebruikmaken van Unicode- om inconsistenties van verschillende codepagina's te voorkomen en om de lokalisatie te vereenvoudigen. Voor sommige oudere protocollen is echter mogelijk het gebruik van DBCS-codepagina's vereist. Elke DBCS-codepagina ondersteunt verschillende tekens, maar geen pagina ondersteunt de volledige breedte van tekens die door Unicode worden geleverd. Elke DBCS-codepagina ondersteunt een andere subset, verschillend gecodeerd. Gegevens die van de ene DBCS-codepagina naar de andere worden geconverteerd, zijn beschadigd omdat dezelfde gegevenswaarde op verschillende codepagina's een ander teken kan coderen. Gegevens die van Unicode naar DBCS worden geconverteerd, zijn onderhevig aan gegevensverlies, omdat een bepaalde codepagina mogelijk niet elk teken kan vertegenwoordigen dat in die specifieke Unicode-gegevens wordt gebruikt.
Als u een DBCS-tekenreeks wilt interpreteren, moet een toepassing beginnen aan het begin van de tekenreeks en vooruit scannen. Het houdt bij wanneer er een lead-byte in de tekenreeks optreedt en de volgende byte wordt behandeld als het volggedeelte van hetzelfde teken. Als de toepassing de tekenreeks één byte tegelijk scant en een byte tegenkomt die de codewaarde lijkt te zijn die een backslash (\) vertegenwoordigt, kan die byte gewoon de trail-byte van een twee-byteteken zijn. De toepassing kan niet slechts een back-up maken van één byte om te zien of de voorgaande byte een lead-byte is, omdat die bytewaarde mogelijk in aanmerking komt voor gebruik als zowel een lead-byte als een trail-byte. De toepassing heeft dus in wezen hetzelfde probleem als met de mogelijke backslash. Met andere woorden, subtekenreekszoekopdrachten zijn veel ingewikkelder met een DBCS dan met SBCSs of Unicode. Toepassingen die ondersteuning bieden voor een DBCS moeten daarom speciale functies gebruiken, zoals _mbsstr, in plaats van de StrStr--functie.
Uw toepassingen gebruiken DBCS Windows-codepagina's met de A-versies van Windows-functies. Zie conventies voor functieprototypes en codepagina's. Om een DBCS-codepagina te identificeren, kan een toepassing de functie GetCPInfo of GetCPInfoEx gebruiken. Een toepassing kan de functie IsDBCSLeadByte gebruiken om te bepalen of een bepaalde waarde kan worden gebruikt als de lead-byte van een 2-byteteken. Bovendien kan een toepassing de functies MultiByteToWideChar en WideCharToMultiByte-functies gebruiken om toe te wijzen tussen Unicode- en DBCS-tekenreeksen.
Verwante onderwerpen