Unicode
Unicode je celosvětová standard kódování znaků. Systém používá unicode výhradně pro manipulaci s znaky a řetězci. Podrobný popis všech aspektů unicode najdete v tématu StandardníUnicode .
Ve srovnání se staršími mechanismy pro zpracování dat znaků a řetězců unicode zjednodušuje lokalizaci softwaru a zlepšuje vícejazyčné zpracování textu. Pokud chcete ve svých aplikacích znázorňovat znaková a řetězcová data, můžete povolit funkce univerzální výměny dat pro globální marketing pomocí jednoho binárního souboru pro každý možný kód znaku. Unicode dělá toto:
- Umožňuje libovolnou kombinaci znaků nakreslených z jakékoli kombinace skriptů a jazyků, aby spolu existovaly v jednom dokumentu.
- Definuje sémantiku pro každý znak.
- Standardizuje chování skriptu.
- Poskytuje standardní algoritmus pro obousměrný text.
- Definuje křížová mapování na jiné standardy.
- Definuje více kódování jedné znakové sady: UTF-7, UTF-8, UTF-16 a UTF-32. Převod dat mezi těmito kódováními je bezeztrátný.
Unicode podporuje mnoho skriptů používaných jazyky po celém světě a také velký počet technických symbolů a speciálních znaků používaných při publikování. Mezi podporované skripty patří mimo jiné, latinka, řečtina, cyrilice, hebrejština, arabština, Devanagari, thajština, Han, Hangul, Hiragana a Katakana. Mezi podporované jazyky patří němčina, francouzština, angličtina, řečtina, ruština, hebrejština, arabština, hindština, thajština, čínština, korejština a japonština. Unicode v současné době může představovat velkou většinu znaků v moderním počítači, který se používá po celém světě, a je stále aktualizován, aby byl ještě více dokončený.
Funkce s podporou kódování Unicode jsou popsány v konvencích pro prototypy funkcí. Tyto funkce používají kódování UTF-16 (wide character), což je nejběžnější kódování Unicode a kódování používané pro nativní kódování Unicode v operačních systémech Windows. Každá hodnota kódu je 16 bitů široká, na rozdíl od starší znakové stránky přístupu k datům znaků a řetězců, které používají 8bitové hodnoty kódu. Použití 16 bitů umožňuje přímé kódování 65 536 znaků. Ve skutečnosti je vesmír symbolů, které se používají k přepisu lidských jazyků, ještě větší než to, a body kódu UTF-16 v rozsahu U+D800 až U+DFFF se používají k vytvoření náhradních párů, které představují 32bitové kódování doplňkových znaků. Další informace najdete v tématu Náhradní znaky a doplňkové znaky.
Znaková sada Unicode obsahuje celou řadu kombinujících znaků, jako je U+0308 (" ") kombinace dieréz nebo umlaut. Unicode může často představovat stejný glyf v podobě "složené" nebo "dekomponované": například složená forma "Ä" je jediný bod kódu Unicode "Ä" (U+00C4), zatímco jeho rozkladový formulář je "A" + " "). (U+0041 U+0308). Unicode nedefinuje složený formulář pro každý glyf. Například vietnamská malá písmena "o" s circumflex a tilda ("ỗ") je reprezentována U+006f U+0302 U+0303 (o + Circumflex + Tilde). Další diskuzi o kombinování znaků a souvisejících problémů najdete v tématu Použití normalizace unicode k reprezentaci řetězců.
Kvůli kompatibilitě s 8bitovým a 7bitovým prostředím lze kódování Unicode také zakódovat jako UTF-8 a UTF-7. Zatímco funkce s podporou Unicode ve Windows používají UTF-16, je také možné pracovat s daty kódovanými v UTF-8 nebo UTF-7, které jsou podporovány ve Windows jako vícebajtové znakové sady znakové stránky.
Nové aplikace pro Windows by měly jako interní reprezentaci dat používat UTF-16. Systém Windows také poskytuje rozsáhlou podporu pro kódové stránky a smíšené použití ve stejné aplikaci je možné. I nové aplikace založené na kódování Unicode někdy musí pracovat s kódovými stránkami. Důvody jsou popsány v znakové stránky.
Aplikace může použít MultiByteToWideChar a WideCharToMultiByte funkce k převodu mezi řetězci na základě znakových stránek a řetězců Unicode. I když jejich názvy odkazují na "MultiByte", tyto funkce fungují stejně dobře s jednobajtovou znakovou sadou (SBCS), dvoubajtové znakové sady (DBCS) a vícebajtové znakové sady (MBCS).
Aplikace pro Windows by měla používat UTF-16 interně a převádět pouze jako součást "tenké vrstvy" přes rozhraní, které musí používat jiný formát. Tato technika chrání před ztrátou a poškozením dat. Každá znaková stránka podporuje různé znaky, ale žádná z nich nepodporuje celé spektrum znaků, které poskytuje Unicode. Většina znakových stránek podporuje různé podmnožina, jinak kódované. Kódové stránky pro UTF-8 a UTF-7 jsou výjimkou, protože podporují kompletní znakovou sadu Unicode a převod mezi těmito kódováními a UTF-16 je bezeztrátový.
Data převedená přímo z kódování používaného jednou znakovou stránkou na kódování, které používá jiný, podléhají poškození, protože stejná datová hodnota na různých znakových stránkách může kódovat jiný znak. I když aplikace převádí co nejblíže rozhraní, měli byste pečlivě zvážit rozsah dat, který se má zpracovat.
Data převedená z kódování Unicode na znakovou stránku podléhají ztrátě dat, protože daná znaková stránka nemusí být schopna znázorňovat každý znak použitý v datech unicode. Proto mějte na paměti, že WideCharToMultiByte může ztratit některá data, pokud cílová znaková stránka nemůže představovat všechny znaky v řetězci Unicode.
Při modernizaci starších verzí aplikací založených na znakové stránce pro použití Unicode můžete použít obecné funkce a makro TEXT, abyste zachovali jednu sadu zdrojů, ze kterých se zkompilují dvě verze aplikace. Jedna verze podporuje Unicode a druhá funguje se stránkami kódu Windows. Pomocí tohoto mechanismu můžete převést i velmi velké aplikace ze stránek kódu Systému Windows na Unicode a přitom udržovat zdroje aplikací, které lze kompilovat, sestavovat a testovat ve všech fázích převodu. Další informace naleznete v tématu konvence prototypů funkcí.
Znaky a řetězce Unicode používají datové typy, které se liší od znaků a řetězců založených na znakové stránce. Spolu s řadou maker a konvencí pojmenování tento rozdíl minimalizuje pravděpodobnost náhodného kombinování dvou typů dat znaků. Usnadňuje kontrolu typů kompilátoru, aby se zajistilo, že se s funkcemi, které očekávají řetězce Unicode, používají pouze hodnoty parametrů Unicode.
Související témata