Compartilhar via


Suporte para Conjuntos de Caracteres Multibyte (MBCSs)

Os MBCSs (conjuntos de caracteres multibyte) são uma abordagem mais antiga da necessidade de compatibilidade com conjuntos de caracteres, como japonês e chinês, que não podem ser representados em um único byte. Se você estiver desenvolvendo algo novo, deverá usar o Unicode para todas as cadeias de caracteres de texto, exceto talvez cadeias de caracteres do sistema que não são vistas pelos usuários finais. MBCS é uma tecnologia herdada e não é recomendado para novos desenvolvimentos.

A implementação mais comum de MBCS (conjuntos de caracteres de byte duplo) é DBCSs. O Visual C++ em geral e o MFC, em particular, estão totalmente habilitados para DBCS.

Para exemplos, consulte os arquivos de código-fonte MFC.

Para plataformas usadas em mercados cujos idiomas usam conjuntos de caracteres grandes, a melhor alternativa ao Unicode é o MBCS. O MFC dá suporte ao MBCS usando tipos de dados internacionalizáveis e funções de tempo de execução C. Você deve fazer o mesmo em seu código.

Em MBCS, os caracteres são codificados em 1 ou 2 bytes. Em caracteres de 2 bytes, o primeiro ou byte principal sinaliza que tanto ele quanto o seguinte byte devem ser interpretados como um caractere. O primeiro byte vem de um intervalo de códigos reservados para uso como bytes de início. Os intervalos de bytes que podem ser bytes líderes dependem da página de código em uso. Por exemplo, a página de código japonês 932 usa o intervalo 0x81 até 0x9F como bytes líderes, mas a página de código coreano 949 usa um intervalo diferente.

Considere todos os aspectos seguintes na programação de MBCS.

Caracteres MBCS no ambiente podem aparecer em strings, como nomes de arquivos e diretórios.

Operações de edição

As operações de edição em aplicativos MBCS devem operar em caracteres, não em bytes. O cursor não deve dividir um caractere, a tecla seta para a direita deve movimentar para a direita um caractere e assim por diante. Excluir deve excluir um caractere; Desfazer deve reinseri-lo.

Manipulação de cadeia de caracteres

Em um aplicativo que usa MBCS, a manipulação de strings apresenta problemas especiais. Caracteres de ambas as larguras são misturados em uma única cadeia de caracteres; portanto, você precisa se lembrar de verificar se há bytes líderes.

Suporte à biblioteca de runtime

A biblioteca de tempo de execução C e o MFC dão suporte à programação byte único, MBCS, e Unicode. Cadeias de caracteres de byte único são processadas com a família str de funções de tempo de execução, cadeias de caracteres MBCS são processadas com funções _mbs correspondentes e cadeias de caracteres Unicode são processadas com funções wcs correspondentes. As implementações de funções membro da classe MFC fazem uso de funções de tempo de execução portáteis que mapeiam, nas circunstâncias adequadas, para a família normal de funções str, as funções MBCS ou as funções Unicode, conforme descrito em "Portabilidade MBCS/Unicode".

Portabilidade MBCS/Unicode

Usando o cabeçalho tchar.h, você pode criar aplicativos de byte único, MBCS e Unicode a partir das mesmas fontes. Tchar.h define macros prefixadas com _tcs, que são mapeadas para str, _mbs, ou wcs funções, conforme apropriado. Para criar o MBCS, defina o símbolo _MBCS. Para criar o Unicode, defina o símbolo _UNICODE. Por padrão, _UNICODE é definido para aplicativos do MFC. Para obter mais informações, consulte Mapeamentos de texto genérico em tchar.h.

Observação

O comportamento será indefinido se você definir _UNICODE e _MBCS.

Os arquivos de cabeçalho Mbctype.h e Mbstring.h definem funções e macros específicas do MBCS, que sejam necessários em alguns casos. Por exemplo, _ismbblead informa se um byte específico em uma cadeia de caracteres é um byte líder.

Para portabilidade internacional, codifique seu programa com Unicode ou conjunto de caracteres multibyte (MBCSs).

O que você deseja fazer?

Confira também

Texto e cadeias de caracteres
Suporte a MBCS no Visual C++