Megosztás:


Unicode-támogatás

A Unicode az összes karakterkészlet támogatásának specifikációja, beleértve azokat is, amelyeket nem lehet egyetlen bájtban ábrázolni. Ha nemzetközi piacra programzik, javasoljuk, hogy Unicode vagy többbájtos karakterkészletet (MBCS) használjon. Vagy írd meg a programot úgy, hogy egy kapcsoló módosításával különböző verziókat készíthess.

A széles karakter egy két bájtos többnyelvű karakterkód. Több tízezer karakter, amely szinte minden, a modern számítástechnikában világszerte használt karakterből áll, beleértve a technikai szimbólumokat és a speciális közzétételi karaktereket is, a Unicode-specifikáció szerint egyetlen széles karakterként, UTF-16 használatával kódolva. Azok a karakterek, amelyeket nem lehet egyetlen széles karakterben ábrázolni, Unicode-párban is megjeleníthetők a Unicode helyettesítő pár funkcióval. Mivel az UTF-16-ban szinte minden közös használatú karakter egyetlen 16 bites karakterben jelenik meg, a széles karakterek használata leegyszerűsíti a nemzetközi karakterkészletekkel való programozást. Az UTF-16LE használatával kódolt széles karakterek (kis endian) a Windows natív karakterformátumai.

A széles karakterlánc tömbként wchar_t[] jelenik meg, és egy mutató mutat wchar_t* rá. Bármely ASCII-karakter széles karakterként ábrázolható az L betű előtaggal a karakterhez. Az L'\0' például egy végző széles (16-bites) NULL karakter. Hasonlóképpen bármely ASCII-sztringkonstans ábrázolható széles karakterláncként az L betű előtag hozzáadásával az ASCII-literálhoz (L"Hello").

A széles karakterek általában több helyet foglalnak el a memóriában, mint a többbájtos karakterek, de gyorsabbak a feldolgozásuk. Emellett egyszerre csak egy területi beállítás jelölhető többbájtos kódolásban, míg a világ összes karakterkészletét egyidejűleg a Unicode-ábrázolás képviseli.

Az MFC-keretrendszer teljes egészében Unicode-kompatibilis, az MFC pedig hordozható makrók használatával teszi lehetővé a Unicode engedélyezését, ahogyan az az alábbi táblázatban látható.

Hordozható adattípusok az MFC-ben

Nem hordozható adattípus Ezt a makrót lecserélte
char, wchar_t _TCHAR
char*, LPSTR (Win32 adattípus), LPWSTR LPTSTR
const char*, LPCSTR (Win32 adattípus), LPCWSTR LPCTSTR

Az osztály CString alapként használja _TCHAR , és konstruktorokat és operátorokat biztosít az egyszerű átalakításokhoz. A Unicode legtöbb sztringművelete ugyanazzal a logikával írható, amelyet a Windows ANSI-karakterkészlet kezelésére használnak, azzal a kivétellel, hogy az alapművelet egy 8 bites bájt helyett egy 16 bites karakter. A többbájtos karakterkészletekkel ellentétben nem kell (és nem is kell) úgy kezelnie egy Unicode-karaktert, mintha két különálló bájt lenne. Önnek azonban foglalkoznia kell azzal a lehetőséggel, hogy egyetlen karaktert képviseljen egy helyettesítő, széles karakterpár. Általában ne írjon olyan kódot, amely feltételezi, hogy egy sztring hossza megegyezik a benne található karakterek számával , legyen szó keskeny vagy széles karakterekről.

Mit kíván tenni?

Lásd még

Szöveg és sztringek
A wmain használatának támogatása