Mezinárodní podpora

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 runtime knihovna podporují Unicode nebo MBCS, stále zbývá nějaká práce. 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é běhové funkce 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í, aby MFC bylo přenositelné v obou prostředích.

    • Zajistěte, aby se literální řetězce a znaky přenášely v kterémkoli prostředí 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í. Je možné používat znaky ANSI v některých částech vašeho programu a znaky Unicode v jiných, ale nemůžete je kombinovat ve stejném řetězci.

    • Ve vaší aplikaci pevně nezakódujte řetězce. Místo toho je přidejte jako prostředky STRINGTABLE do souboru .rc aplikace. Aplikace se pak může lokalizovat bez nutnosti změn zdrojového kódu nebo rekompilace. Pro více informací o prostředcích STRINGTABLE se podívejte na 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. Většina kódu používá znaky se znaménkem, a pokud tyto znaky přesahují hodnotu 0x80, jsou při převodu na int sign-extendovány. Jedná se o problém indexování pole, protože znaky s rozšířeným znaménkem, které jsou záporné, vedou mimo rozsah 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