Unicode a vícebajtové znakové sady (MBCS) podpora
Některé jazyky, například japonština a čínština, mají velké znakové sady.Podpora programování pro tyto trhy, je povolena knihovna tříd Foundation Microsoft (MFC) pro dva odlišné přístupy ke zpracování velkých znakových sad:
Unicode
Vícebajtové znakové sady (MBCS)
Podpora MFC řetězce Unicode
Knihovny celou třídu podmíněně povolen pro znaky Unicode a řetězce.Zejména třídy CString sady Unicode.
UAFXCW.LIB |
UAFXCW.PDB |
UAFXCWD.LIB |
UAFXCWD.PDB |
MFCxxU.LIB |
MFCxxU.PDB |
MFCxxU.DLL |
MFCxxUD.LIB |
MFCxxUD.PDB |
MFCxxUD.KNIHOVNA DLL |
MFCSxxU.LIB |
MFCSxxU.PDB |
MFCSxxUD.LIB |
MFCSxxUD.PDB |
MFCMxxU.LIB |
MFCMxxU.PDB |
MFCMxxU.DLL |
MFCMxxUD.LIB |
MFCMxxUD.PDB |
MFCMxxUD.KNIHOVNA DLL |
(xx představuje číslo verze souboru; například "80" znamená verze 8.0.)
CStringje založen TCHAR datového typu.Pokud symbol _UNICODE je definován pro sestavení programu, TCHAR je definován jako typ wchar_t , 16bitové znak typ kódování.Jinak TCHAR je definován jako char , normální 8bitové znakové kódování.Proto v kódování Unicode CString se skládá z 16bitové znaků.Bez kódování Unicode, je tvořeno znaky typu char .
Kompletní Unicode programování aplikace, musíte rovněž:
Použití _T makro podmíněně literál řetězce kódu Unicode přenosný.
Při předání řetězce věnujte pozornost zda vyžadují argumenty funkce délka znaků nebo délka v bajtech.Rozdíl je důležitý, pokud používáte řetězce Unicode.
Přenosné verze funkce zpracování řetězců C Runtime použijte.
Pro znaky a znaky ukazatele použijte následující typy dat:
TCHARPoužít char .
LPTSTRPoužít char* .
LPCTSTRPoužít const char* .CStringprovozovatel poskytuje LPCTSTR k převodu mezi CString a LPCTSTR .
CStringdodává také podporující Unicode konstruktory, operátory přiřazení a relační operátory.
Související informace o programování Unicode Témata Unicode.Reference knihovny runtime definuje přenosné verze své funkce zpracování řetězců.Viz kategorie mezinárodní.
Podpora znakové sady MBCS řetězce MFC
Knihovna tříd je povolena také pro vícebajtové znakové sady, ale pouze pro dvoubajtové znakové sady (DBCS).
Vícebajtové znakové sady znak může být jeden nebo dva bajty široký.Pokud je široký dva bajty, jeho první bajt je speciální "vedoucí bajt" je zvolené z určité oblasti, podle toho, který kód stránky se používá.Dohromady, olova a "auditovacím sledu bajtů" zadat jedinečný znak kódování.
Pokud symbol _MBCS je definován pro sestavení aplikace typu TCHAR , na kterém CString je založen, mapuje se k char .Je určit, které bajty v CString jsou realizace bajtů, které jsou stopy bajtů.C Runtime library poskytuje funkce vám to zjistit.
Pod DBCS daný řetězec může obsahovat všechny jednobajtové znaky ANSI, všechny znaky dvoubajtové nebo kombinací obou.Tyto možnosti vyžadují zvláštní péči při analýze řetězce.To zahrnuje CString objektů.
[!POZNÁMKA]
Serializace řetězce Unicode v MFC můžete číst řetězce Unicode a MBCS bez ohledu na verzi aplikace, kterou používáte.Datové soubory jsou přenositelné mezi verzemi sady Unicode a znakové sady MBCS.
CStringzvláštní "obecný text" verze C Runtime funkcí, které volají funkce členů použít nebo používat funkce podporující kódování Unicode.Tedy například pokud CString obvykle volají funkci strcmp , volá funkci generic text odpovídající _tcscmp místo.Podle toho, jak symboly _MBCS a _UNICODE jsou definovány _tcscmp mapuje takto:
_MBCSdefinice |
_mbscmp |
_UNICODEdefinice |
wcscmp |
Žádný symbol definovaný |
strcmp |
[!POZNÁMKA]
Symboly _MBCS a _UNICODE se vzájemně vylučují.
Mapování funkce obecný text pro všechny rutinami spuštění zpracování řetězců jsou popsány v C referenční knihovny runtime.Viz zejména Internacionalizace.
Podobně CString metody jsou implementovány pomocí mapování typu dat "Obecné".To enable both MBCS and Unicode, MFC uses TCHAR for char, LPTSTR for char*, and LPCTSTR for const char*.Tyto znakové sady MBCS nebo Unicode zajistit správné mapování.