Sdílet prostřednictvím


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?

Viz také

Koncepty

Znakové sady v jazyce C++

Podpora pro používání wmain