Partilhar via


Habilitação Internacional

A maioria dos códigos C e C++ tradicionais faz suposições sobre manipulação de caracteres e cadeias de caracteres que não funcionam bem para aplicativos internacionais. Embora o MFC e a biblioteca de tempo de execução ofereçam suporte a Unicode ou MBCS, ainda há trabalho a fazer. Para guiá-lo, esta seção explica o significado de "habilitação internacional" no Visual C++:

  • Tanto o Unicode quanto o MBCS são habilitados por meio de tipos de dados portáteis em listas de parâmetros de função MFC e tipos de retorno. Esses tipos são definidos condicionalmente das maneiras apropriadas, dependendo se sua compilação define o símbolo _UNICODE ou o símbolo _MBCS (que significa DBCS). Diferentes variantes das bibliotecas MFC são automaticamente vinculadas ao seu aplicativo, dependendo de qual desses dois símbolos sua compilação define.

  • O código da biblioteca de classes utiliza funções de tempo de execução portáveis e outros meios para assegurar o comportamento correto de Unicode ou MBCS.

  • Você ainda deve lidar com certos tipos de tarefas de internacionalização em seu código:

    • Use as mesmas funções de tempo de execução portáteis que tornam o MFC portátil em qualquer ambiente.

    • Torne cadeias literais e caracteres portáteis em ambos os ambientes, usando a macro _T. Para obter mais informações, consulte Generic-Text mapeamentos em tchar.h.

    • Tome precauções ao analisar cadeias de caracteres em MBCS. Estas precauções não são necessárias em Unicode. Para obter mais informações, consulte Dicas de programação do MBCS.

    • Tenha cuidado se você misturar caracteres ANSI (8 bits) e Unicode (16 bits) em seu aplicativo. É possível usar caracteres ANSI em algumas partes do seu programa e caracteres Unicode em outras, mas você não pode misturá-los na mesma cadeia de caracteres.

    • Não codifice cadeias de caracteres em seu aplicativo. Em vez disso, torne-os recursos STRINGTABLE adicionando-os ao arquivo .rc do aplicativo. Seu aplicativo pode ser localizado sem exigir alterações no código-fonte ou recompilação. Para obter mais informações sobre recursos STRINGTABLE, consulte Editor de cadeia de caracteres.

Observação

Os conjuntos de caracteres europeus e MBCS têm alguns caracteres, como letras acentuadas, com códigos de caracteres maiores que 0x80. Como a maior parte do código usa caracteres com sinal, esses caracteres maiores que 0x80 são estendidos com sinal quando convertidos em int. Isso é um problema para a indexação de matrizes porque os caracteres prolongados pelo sinal, sendo negativos, indexam fora da matriz. Os idiomas que usam MBCS, como o japonês, também são exclusivos. Como um caractere pode consistir em 1 ou 2 bytes, você sempre deve manipular os dois bytes ao mesmo tempo.

Ver também

Unicode e MBCS
Estratégias de Internacionalização