Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Unicode je specifikace pro podporu všech znakových sad, včetně těch, které nelze reprezentovat v jednom bajtu. Pokud programujete pro mezinárodní trh, doporučujeme použít znakovou sadu Unicode nebo vícebajtovou znakovou sadu (MBCS). Nebo naprogramujte svůj program, abyste ho mohli sestavit buď tak, že změníte přepínač.
Široký znak je 2 bajtový kód vícejazyčného znaku. Desítky tisíc znaků, které obsahují téměř všechny znaky používané v moderním výpočetním prostředí po celém světě, včetně technických symbolů a speciálních znaků publikování, mohou být reprezentovány podle specifikace Unicode jako jeden široký znak kódovaný pomocí UTF-16. Znaky, které nelze reprezentovat pouze v jednom širokém znaku, mohou být reprezentovány ve dvojici Unicode pomocí funkce náhradní dvojice Unicode. Vzhledem k tomu, že téměř každý běžný znak je reprezentován v kódování UTF-16 v jednom 16bitovém znaku, použití širokých znaků zjednodušuje programování s mezinárodními znakovými sadami. Široké znaky kódované pomocí UTF-16LE (pro little-endian) jsou nativním formátem znaků pro Windows.
Řetězec širokého znaku wchar_t[] je reprezentován jako pole a je odkazován ukazatelem wchar_t* . Libovolný znak ASCII může být reprezentován jako široký znak předponou písmena L znaku. Například L'\0' je ukončující široký (16bitový) znak NULL. Podobně lze jakýkoli řetězcový literál ASCII reprezentovat jako literál řetězce širokého znaku tak, že předponu písmene L před literál ASCII (L"Hello").
Obecně platí, že široké znaky zabírají více místa v paměti než vícebajtové znaky, ale zpracování je rychlejší. Kromě toho může být v kódování s vícebajty reprezentováno vždy jen jedno národní prostředí, zatímco všechny znakové sady na světě jsou reprezentovány současně reprezentací Unicode.
Architektura MFC je v celém prostředí unicode povolená a mfc umožňuje kódování Unicode pomocí přenosných maker, jak je znázorněno v následující tabulce.
Přenosné datové typy v prostředí MFC
| Nepřenosných datových typů | Nahrazeno tímto makrem |
|---|---|
char, wchar_t |
_TCHAR |
char*, LPSTR (datový typ Win32), LPWSTR |
LPTSTR |
const char*, LPCSTR (datový typ Win32), LPCWSTR |
LPCTSTR |
Třída CString používá _TCHAR jako základ a poskytuje konstruktory a operátory pro snadné převody. Většinu operací řetězců pro Unicode lze zapsat pomocí stejné logiky, která se používá pro zpracování znakové sady Windows ANSI, s tím rozdílem, že základní jednotka operace je 16bitový znak místo 8bitového bajtu. Na rozdíl od práce s vícebajtovými znakovými sadami nemusíte (a neměli byste) považovat znak Unicode za dva odlišné bajty. Musíte se však zabývat možností jednoho znaku reprezentované náhradní dvojicí širokých znaků. Obecně platí, že nezapisujte kód, který předpokládá délku řetězce, je stejný jako počet znaků, ať už úzký nebo široký, který obsahuje.
Co chcete udělat?
Podpora použití mfc unicode a vícebajtové znakové sady (MBCS)
Použití funkce wmain, takže můžu programu předat argumenty širokého znaku
Informace o mapování obecného textu pro přenositelnost bajtů a šířky