Compartilhar 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 em aplicativos internacionais. Embora o MFC e a biblioteca em tempo de execução ofereçam suporte a Unicode ou MBCS, você ainda tem trabalho para fazer. Para guiá-lo, esta seção explica o significado de "habilitação internacional" no Visual C++:

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

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

  • Você ainda deve tratar determinados tipos de tarefas de internacionalização em seu código:

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

    • Torne cadeias de caracteres literais e caracteres portáteis em todos os ambientes, usando a macro _T. Para obter mais informações, consulte Mapeamentos de texto genérico em tchar.h.

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

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

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

Observação

Conjuntos de caracteres europeus e MBCS têm alguns caracteres, como letras acentuadas, com códigos de caracteres maiores que 0x80. Como a maioria dos códigos usa caracteres assinados, esses caracteres maiores que 0x80 são estendidos por sinal quando convertidos em int. Esse é um problema para a indexação de matriz porque os caracteres estendidos por sinal, sendo negativos, indexam fora da matriz. 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.

Confira também

Unicode e MBCS
Estratégias de internacionalização