Sdílet prostřednictvím


Podpora národních prostředí

Většina tradičního kódu C a C++ vytváří předpoklady o manipulaci s znaky a řetězci, které nefungují dobře pro mezinárodní aplikace. I když mfc i knihovna runtime podporují Unicode nebo MBCS, stále můžete pracovat. Tato část vás provede vysvětlením významu "mezinárodního povolení" v jazyce Visual C++:

  • Unicode i MBCS jsou povoleny prostřednictvím přenosných datových typů v seznamech parametrů funkce MFC a návratových typů. Tyto typy jsou podmíněně definovány příslušnými způsoby v závislosti na tom, jestli sestavení definuje symbol _UNICODE nebo symbol _MBCS (což znamená DBCS). Různé varianty knihoven MFC jsou automaticky propojeny s vaší aplikací v závislosti na tom, které z těchto dvou symbolů vaše sestavení definuje.

  • Kód knihovny tříd používá přenosné funkce za běhu a další prostředky k zajištění správného chování unicode nebo MBCS.

  • V kódu stále musíte zpracovávat určité druhy úloh internacionalizace:

    • Použijte stejné přenosné funkce za běhu, které umožňují přenositelné prostředí MFC v obou prostředích.

    • Zajistěte, aby se literální řetězce a znaky přenášely v obou prostředích pomocí _T makra. Další informace naleznete v tématu Mapování obecného textu v tchar.h.

    • Při analýze řetězců v rámci služby MBCS proveďte opatření. Tato opatření nejsou v kódování Unicode nutná. Další informace naleznete v tématu Tipy pro programování mbCS.

    • Při kombinaci znaků ANSI (8bitová) a Unicode (16bitová verze) ve vaší aplikaci buďte obezřetní. V některých částech programu a znaků Unicode je možné v jiných používat znaky ANSI, ale nemůžete je kombinovat ve stejném řetězci.

    • Ve vaší aplikaci pevně nezakódujte řetězce. Místo toho je přidejte do souboru .rc aplikace prostředky STRINGTABLE. Aplikace se pak může lokalizovat bez nutnosti změn zdrojového kódu nebo rekompilace. Další informace o prostředcích STRINGTABLE naleznete v tématu Editor řetězců.

Poznámka:

Evropské znakové sady a znakové sady MBCS mají některé znaky, jako jsou písmena se zvýrazněnými písmeny, s kódy znaků většími než 0x80. Vzhledem k tomu, že většina kódu používá znaky se znaménkem, tyto znaky větší než 0x80 jsou při převodu na int. Jedná se o problém indexování pole, protože znaky s rozšířenými znaménkami, které jsou záporné, indexy mimo pole. Jazyky, které používají službu MBCS, jako je japonština, jsou také jedinečné. Vzhledem k tomu, že znak může obsahovat 1 nebo 2 bajty, měli byste vždy manipulovat s oběma bajty najednou.

Viz také

Unicode a MBCS
Strategie internacionalizace