Teckenuppsättningar med dubbla byte
En dubbel byte-teckenuppsättning (DBCS), även kallad "expanderad 8-bitars teckenuppsättning", är en utökad en bytes teckenuppsättning (SBCS), implementerad som en kodsida. DBCS utvecklades ursprungligen för att utöka SBCS-designen för att hantera språk som japanska och kinesiska. Vissa tecken i en DBCS, inklusive de siffror och bokstäver som används för att skriva engelska, har kodvärden med en byte. Andra tecken, till exempel kinesiska ideografier eller japanska kanji, har kodvärden med dubbla byte. En DBCS kan motsvara antingen en Windows-kodsida eller en OEM-kodsida. En DBCS-kodsida kan också innehålla en icke-intern kodsida, till exempel en EBCDIC-kodsida. Definitioner av dessa kodsidor finns i Kodsidor.
Not
Nya Windows-program bör använda Unicode- för att undvika inkonsekvenser i olika kodsidor och för att underlätta lokaliseringen. Vissa äldre protokoll kan dock kräva användning av DBCS-kodsidor. Varje DBCS-kodsida stöder olika tecken, men ingen sida stöder den fullständiga bredden av tecken som tillhandahålls av Unicode. Varje DBCS-kodsida har stöd för en annan delmängd, olika kodad. Data som konverteras från en DBCS-kodsida till en annan kan skadas eftersom samma datavärde på olika kodsidor kan koda ett annat tecken. Data som konverteras från Unicode till DBCS kan förloras eftersom en viss kodsida kanske inte kan representera alla tecken som används i just dessa Unicode-data.
För att tolka en DBCS-sträng måste ett program starta i början av strängen och genomsöka framåt. Den håller reda på när den stöter på en leadbyte i strängen och behandlar nästa byte som den avslutande delen av samma tecken. Om programmet helt enkelt söker igenom strängen en byte i taget och stöter på en byte som verkar vara kodvärdet som representerar ett omvänt snedstreck ("\"), kan bytet helt enkelt vara spårbytet för ett tvåbytestecken. Programmet kan inte bara säkerhetskopiera en byte för att se om föregående byte är en lead byte, eftersom bytevärdet kan vara berättigat att användas som både en lead byte och en trail byte. Därför har programmet i stort sett samma problem med det som med det möjliga omvänt snedstrecket. Med andra ord är delsträngssökningar mycket mer komplicerade med en DBCS än med antingen SBCSs eller Unicode. Därför måste program som stöder en DBCS använda särskilda funktioner, till exempel _mbsstr, i stället för funktionen StrStr.
Dina program använder DBCS Windows-kodsidor med "A"-versionerna av Windows-funktioner. Se konventioner för funktionsprototyper och kodsidor. För att identifiera en DBCS-kodsida kan ett program använda funktionen GetCPInfo eller GetCPInfoEx. Ett program kan använda funktionen IsDBCSLeadByte för att avgöra om ett angivet värde kan användas som leadbyte med ett 2-bytestecken. Dessutom kan ett program använda funktionerna MultiByteToWideChar och WideCharToMultiByte för att mappa mellan Unicode- och DBCS-strängar.
Relaterade ämnen