Unicode
A Unicode egy globális karakterkódolási szabvány. A rendszer kizárólag a Unicode-t használja karakter- és sztringmanipulációhoz. A Unicode minden aspektusának részletes leírását a Unicode Standard találja.
A karakter- és sztringadatok kezelésének régebbi mechanizmusaihoz képest a Unicode leegyszerűsíti a szoftver honosítását, és javítja a többnyelvű szövegfeldolgozást. A Unicode használatával karakter- és sztringadatokat jelölhet az alkalmazásokban, lehetővé teheti az univerzális adatcsere-képességeket a globális marketinghez, egyetlen bináris fájl használatával minden lehetséges karakterkódhoz. A Unicode a következőket teszi:
- Lehetővé teszi a szkriptek és nyelvek bármilyen kombinációjából származó karakterek bármilyen kombinációját, hogy egyetlen dokumentumban együtt létezhessenek.
- Az egyes karakterek szemantikáját határozza meg.
- Szabványosítja a szkript viselkedését.
- Szabványos algoritmust biztosít a kétirányú szövegekhez.
- Más szabványok keresztleképezését határozza meg.
- Az UTF-7, UTF-8, UTF-16 és UTF-32 karakterkészlet több kódolását határozza meg. Az adatok ezen kódolások közötti konvertálása veszteségmentes.
A Unicode számos olyan szkriptet támogat, amelyeket a világ különböző nyelvei használnak, valamint számos technikai szimbólumot és speciális karaktert is használ a közzétételhez. A támogatott szkriptek többek között latin, görög, cirill, héber, arab, devanagari, thai, han, hangul, hiragana és Katakana. A támogatott nyelvek közé tartozik a német, a francia, az angol, a görög, az orosz, a héber, az arab, a hindi, a thai, a kínai, a koreai és a japán nyelv. A Unicode jelenleg a modern számítógépeken használt karakterek túlnyomó többségét képviseli világszerte, és folyamatosan frissül, hogy még teljesebb legyen.
A Unicode-kompatibilis függvényeket függvény prototípusokkonvenciói ismertetik. Ezek a függvények UTF-16 (széles karakterű) kódolást használnak, amely a Unicode leggyakoribb kódolása, és a Windows operációs rendszerek natív Unicode-kódolásához használatos. Minden kódérték 16 bites, szemben a régebbi kódlap karakter- és sztringadatok megközelítésével, amelyek 8 bites kódértékeket használnak. A 16 bit használata 65 536 karakter közvetlen kódolását teszi lehetővé. Valójában az emberi nyelvek átírására használt szimbólumok univerzuma ennél is nagyobb, és az U+D800 és U+DFFF tartomány UTF-16 kódpontjai helyettesítő párokat alkotnak, amelyek kiegészítő karakterek 32 bites kódolását alkotják. További információért lásd helyettesítők és kiegészítő karakterek.
A Unicode karakterkészlet számos egyesítő karaktert tartalmaz, például U+0308 (" ̈"), egy egyesítési dieresist vagy umlautot. A Unicode gyakran ugyanazt a karakterjelet jelölheti egy ""álló" vagy egy "lebomló" formában: az "Ä" álló formája például az "Ä" egyetlen Unicode-kódpont (U+00C4), a felbontott formája pedig "A" + " ̈" (U+0041 U+0308). A Unicode nem határoz meg minden karakterjelhez álló űrlapot. A vietnami "o" kisbetűt például a circumflex és a tilde ("ỗ") az U+006f U+0302 U+0303 (o + Circumflex + Tilde) képviseli. A karakterek és a kapcsolódó problémák egyesítéséről további információt a Unicode normalizálás használata sztringek ábrázolásáracímű témakörben talál.
A 8 bites és a 7 bites környezetekkel való kompatibilitás érdekében a Unicode UTF-8 és UTF-7 formátumban is kódolható. Míg a Windows Unicode-kompatibilis függvényei UTF-16-ot használnak, az UTF-8 vagy UTF-7 kódolt adatokkal is dolgozhat, amelyeket a Windows többbájtos karakterkészletként támogat, kódlapok.
Az új Windows-alkalmazásoknak az UTF-16-ot kell használniuk belső adatmegjelenítésükként. A Windows széles körű támogatást nyújt a kódlapokhoz, és vegyes használat is lehetséges ugyanabban az alkalmazásban. Még az új Unicode-alapú alkalmazásoknak is néha kódlapokkal kell dolgozniuk. Ennek okait kódlapokismerteti.
Az alkalmazások a MultiByteToWideChar és WideCharToMultiByte függvényeket használhatják a kódlapokon és Unicode-sztringeken alapuló sztringek közötti konvertáláshoz. Bár a nevük "Többbájtos", ezek a függvények egyformán jól működnek (SBCS), kétbájtos karakterkészlet (DBCS) és többbájtos karakterkészlet (MBCS) kódlapjaival.
A Windows-alkalmazásoknak általában belsőleg kell használniuk az UTF-16-ot, és csak egy "vékony réteg" részeként konvertálnak a felületre, amely más formátumot használ. Ez a technika védi az adatok elvesztését és sérülését. Minden kódlap különböző karaktereket támogat, de egyik sem támogatja a Unicode által biztosított karakterek teljes spektrumát. A kódlapok többsége különböző részhalmazokat támogat, másként kódolva. Az UTF-8 és az UTF-7 kódlapjai kivételt képeznek, mivel támogatják a teljes Unicode-karakterkészletet, és a kódolások és az UTF-16 közötti konvertálás veszteségmentes.
Az egyik kódlap által használt kódolásból a másik által használt kódolásba közvetlenül konvertált adatok sérülést szenvednek, mert a különböző kódlapokon lévő adatértékek más karaktereket kódolhatnak. Még akkor is, ha az alkalmazás a lehető legközelebb van az interfészhez, alaposan gondolja át a kezelendő adattartományt.
A Unicode-ból kódlapra konvertált adatok adatvesztéssel járnak, mivel előfordulhat, hogy egy adott kódlap nem tudja az adott Unicode-adatokban használt összes karaktert ábrázolni. Ezért vegye figyelembe, hogy WideCharToMultiByte adatvesztést eredményezhet, ha a célkódlap nem tudja megjeleníteni a Unicode-sztring összes karakterét.
A kódlapalapú régi alkalmazások Unicode-ra való modernizálásakor az általános függvények és a SZÖVEG makró használatával egyetlen forráskészletet tarthat fenn, amelyből az alkalmazás két verzióját fordíthatja le. Az egyik verzió támogatja a Unicode-ot, a másik pedig a Windows-kódlapokat. Ezzel a mechanizmussal még a Nagyon nagy méretű alkalmazásokat is konvertálhatja Windows-kódlapokról Unicode-ra, miközben fenntartja azokat az alkalmazásforrásokat, amelyek az átalakítás minden fázisában lefordíthatók, összeállíthatók és tesztelhetők. További információ: függvény prototípusokra vonatkozó konvenciók.
A Unicode-karakterek és sztringek olyan adattípusokat használnak, amelyek eltérnek a kódlapalapú karakterek és sztringek adattípusaitól. A makrók és az elnevezési konvenciók sorozata mellett ez a különbség minimálisra csökkenti a két karaktertípus véletlen összekeverésének esélyét. Megkönnyíti a fordítótípus-ellenőrzést, hogy csak Unicode-paraméterértékek legyenek használva Unicode-sztringeket váró függvényekkel.
Kapcsolódó témakörök