Znakové stránky
Většina aplikací napsaných dnes zpracovává znaková data primárně jako Unicode, pomocí kódování UTF-16. Mnoho starších aplikací však nadále používá znakové sady založené na znakových stránkách. I nové aplikace někdy musí pracovat s kódovými stránkami, často z jednoho z následujících důvodů:
- Komunikace se staršími aplikacemi
- Komunikace se staršími poštovními a news servery, které nemusí vždy podporovat Unicode.
- Komunikace s konzolou Systému Windows pro starší účely (Konzola podporuje Unicode, ale některé starší nástroje pro aplikace příkazového řádku nemusí.)
Poznámka
Nové aplikace pro Windows by měly používat Unicode, aby nedocházelo k nekonzistence různých znakových stránek a pro snadnou lokalizaci.
Každá znaková stránka je reprezentována identifikátorem znakové stránky, například 1252, a zpracovává se funkcemi rozhraní API sady Unicode a znakové sady. Seznam podporovaných identifikátorů znakové stránky naleznete v tématu Identifikátory znakové stránky. Odkaz "Kódové stránky" na webu Microsoft Go Global Developer Center poskytuje úplný popis mnoha kódových stránek.
Znakové stránky Windows, které se běžně označují jako "znakové stránky ANSI", jsou znakové stránky, pro které hodnoty jiné než ASCII (hodnoty větší než 127) představují mezinárodní znaky. Tyto kódové stránky se používají nativně ve Windows Me a jsou také k dispozici v systému Windows NT a novější.
Poznámka
Původně kódová stránka Windows 1252, znaková stránka běžně používaná pro angličtinu a další západoevropské jazyky, byla založena na americkém návrhu ANSI (National Standards Institute). Tento koncept se nakonec stal ISO 8859-1, ale kódová stránka Windows 1252 byla implementována před tím, než se standard stal konečným, a není úplně stejný jako ISO 8859-1.
Mnoho funkcí rozhraní API systému Windows má verze A (ANSI) a W (široké, Unicode). Verze "A" zpracovává text založený na znakových stránkách Windows, zatímco verze "W" zpracovává text Unicode. Viz datových typů Windows pro řetězce a konvence pro prototypy funkcí.
Stránky kódu Systému Windows se také někdy označují jako "aktivní kódové stránky" nebo "systémové aktivní znakové stránky". Operační systém Windows má vždy jednu aktuálně aktivní znakovou stránku Systému Windows. Všechny verze funkcí rozhraní API ANSI používají aktuálně aktivní znakovou stránku.
Stránky kódu výrobce OEM (Original Equipment Manufacturer) jsou znakové stránky, pro které hodnoty jiné než ASCII představují výkres čáry a interpunkční znaky. Tyto kódové stránky byly původně použity pro MS-DOS a stále se používají pro konzolové aplikace. Používají se také pro jiné než rozšířené názvy souborů v systémech souborů FAT12, FAT16 a FAT32, jak je popsáno v Znakové sady používané v názvech souborů. Obvyklou znakovou stránkou OEM pro angličtinu je znaková stránka 437.
U znakových stránek Systému Windows i znakových stránek OEM 0x00 hodnoty kódu 0x7F odpovídají 7bitové znakové sadě ASCII. Hodnoty kódu 0x00 prostřednictvím 0x19 a 0x7F vždy představují standardizované řídicí znaky a 0x20 prostřednictvím 0x7E představují standardizované zobrazované znaky. Znaky reprezentované zbývajícími kódy 0x80 prostřednictvím 0xff se liší mezi znakovými sadami. Každá znaková sada obsahuje různé speciální znaky, které jsou obvykle přizpůsobené pro jazyk nebo skupinu jazyků. Znaková stránka Systému Windows 1252 a kódová stránka OEM 437 se obecně používají ve Spojených státech.
Kromě stránek kódu Systému Windows a OEM můžou vaše aplikace používat jiné než nativní znakové stránky. Příklady jsou stránky kódu EBCDIC a Macintosh.
Jako znakové stránky se implementují dvě kódování Unicode (UTF-7 a UTF-8). Stejně jako u jiných znakových stránek je každá stránka známá číselným identifikátorem a může být zpracována mnoha funkcemi rozhraní API sady Unicode a znakové sady.
Znakové stránky mohou být jednobabajtů stránek (SBCS) nebo dvoubabajtů znakové sady (DBCS). Na stránkách SBCS každý bajt přímo zakóduje jeden znak, aby bylo možné znázornit přesně 256 různých znaků (včetně řídicích znaků, písmen, číslic, interpunkce, symbolů a podobně). Znakové stránky služby DBCS se používají pro jazyky, jako jsou japonština a čínština. V takové znakové stránce mají některé znaky dvoubajtů kódování s určitými bajtovými hodnotami (vždy hodnoty větší než 127), které slouží jako "hlavní bajty". Místo kódování znaků v jejich vlastních právech mohou být hlavní bajty mapovány na znak pouze ve spojení s "bajtem stopy".
Některé starší protokoly vyžadují použití znakových stránek SBCS a DBCS. Každá znaková stránka SBCS/DBCS podporuje různé znaky, ale žádná znaková stránka nepodporuje celou šířku znaků, které poskytuje Unicode. Každá znaková stránka SBCS/DBCS podporuje jinou podmnožinu, jinak kódovanou.
Poznámka
Data převedená z jedné znakové stránky SBCS nebo DBCS na jinou podléhají poškození, protože stejná datová hodnota na různých znakových stránkách může kódovat jiný znak. Data převedená z Unicode na SBCS nebo DBCS podléhají ztrátě dat, protože daná znaková stránka nemusí představovat každý znak použitý v datech Unicode.
Kromě znakových stránek SBCS a DBCS mají vaše aplikace k dispozici vícebajtové znakové stránky kódu sady znaků 52936, 54936, 51949 a 5022x, které používají podobný přístup pro službu DBCS. Znaková stránka vícebajtové znakové sady ale přesahuje dvoubajtové kódování některých znaků. UTF-7 a UTF-8 používají podobný přístup ke kódování Unicode na základě 7bitových a 8bitových bajtů. Další informace naleznete v tématu Unicode.
Několik funkcí sady Unicode a znakových sad umožňuje aplikacím zpracovávat kódové stránky. Aplikace může pomocí funkcí GetCPInfo a GetCPInfoEx získat informace o znakové stránce. Tyto informace zahrnují výchozí znak použitý v případě, že znak v převedeném řetězci nemá žádnou odpovídající položku na znakové stránce.
Aplikace může použít MultiByteToWideChar a WideCharToMultiByte funkce k převodu mezi řetězci na základě znakových stránek Systému Windows a řetězců Unicode. I když jejich názvy odkazují na "MultiByte", tyto funkce fungují stejně dobře s kódovými stránkami SBCS, DBCS a vícebajtové znakové sady.
Poznámka
WideCharToMultiByte může ztratit některá data, pokud zadaná znaková stránka nemůže představovat všechny znaky v řetězci Unicode.
Vaše aplikace může převést mezi znakovými stránkami Windows a stránkami kódu OEM pomocí standardních funkcí knihovny modulu runtime jazyka C. Použití těchto funkcí však představuje riziko ztráty dat, protože znaky, které mohou být reprezentovány každou znakovou stránkou, neodpovídají přesně.
Aplikace můžou také volat funkci GetACP. Tato funkce načte identifikátor aktuální znakové stránky Systému Windows (ANSI).
Související témata