Podpora pro Unicode
Unicode je specifikace pro podporu všech znakových sad, včetně znakových sad, které nelze znázornit v jednom bajtu. Pokud programujete pro mezinárodní trh, zvažte použití Unicode nebo vícebajtové znakové sady (MBCSs) nebo povolte programu, aby mohl sestavit aplikaci oběma způsoby změnou přepínače.
Široký znak je vícejazyčný 2bajtový znakový kód. Většinu znaků používaných v moderním počítačovém světě, včetně technické symbolů a speciálních znaků pro publikování, mohou být zastoupeny podle specifikace kódování Unicode jako široký znak. Znaky, které nelze reprezentovat v 1 širokém znaku, mohou být znázorněny v páru Unicode s funkcí náhradního Unicode. Protože každý široký znak je vždy reprezentován pevnou velikostí 16 bitů, pomocí širokých znaků se zjednodušuje programování s mezinárodními znakovými sadami.
Řetězec širokého znaku je reprezentován jako pole [wchar_t] a odkazuje na ukazatel wchar_t*. Libovolný znak standartu ASCII může být reprezentován jako široký znak přidáním prefixu v podobě písmena L ke znaku. L'\0' je například ukončení širokého (16bitového) znaku NULL. Podobně lze znázornit libovolný řetězec standartu ASCII literál jako řetězecl - široký znak, přidáním prefixu písmena L do literálu standartu ASCII (L"Hello").
Obecně široké znaky zabírají v paměti více prostoru než vícebajtové znaky, ale jsou rychlejší ke zpracování. Kromě toho může být pouze jedno národní prostředí znázorněno najednou ve vícebajtovém kódování, zatímco všechny znakové sady na světě jsou současně reprezentovány vyjádřením v Unicode.
Vývojový rámec knihovny MFC plně podporuje kódování Unicode s výjimkou databázových tříd. (rozhraní ODBC nepodporuje kódování Unicode.) Knihovna MFC provede povolení Unicode pomocí přenosných maker, jak je uvedeno v následující tabulce.
Přenosné datové typy v knihovně MFC
Nepřenosný datový typ |
Nahrazen tímto makrem |
---|---|
char |
_TCHAR |
char*, LPSTR (Win32 data type) |
LPTSTR |
const char*, LPCSTR (Win32 data type) |
LPCTSTR |
Třída CString používá _TCHAR jako základny a poskytuje konstruktory a operátory pro snadné převody. Většina operací s řetězci kódování Unicode lze zapsat pomocí stejné logiky použité ve znakové sadě ANSI systému Windows, s tím rozdílem, že základní jednotkou operace je 16bitový znak namísto 8bitového. Na rozdíl od práce s vícebajtovými znakovými sadami (MBCSs), nebudete muset (a neměly byste) zacházet se znaky Unicode, jako by byly dva rozdílné bajty.
Co chcete udělat?
Používat wmain, takže mohu posílat argumenty širokého znaku mému programu
Informace o mapování obecných textů pro přenositelnost širokého bajtu