Partilhar via


Suporte para conjuntos de caracteres multibyte (MBCSs)

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

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

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

Para plataformas usadas em mercados cujas linguagens usam grandes conjuntos de caracteres, a melhor alternativa ao Unicode é o MBCS. MFC suporta 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 byte seguinte devem ser interpretados como um caractere. O primeiro byte vem de uma gama de códigos reservados para uso como bytes principais. Que intervalos de bytes podem ser bytes principais depende da página de código em uso. Por exemplo, a página de código japonesa 932 usa o intervalo 0x81 a 0x9F como bytes principais, mas a página de código coreana 949 usa um intervalo diferente.

Considere todos os itens a seguir em sua programação MBCS.

Caracteres MBCS no ambiente Os caracteres MBCS podem aparecer em cadeias de caracteres, 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 mover um caractere para a direita e assim por diante. Excluir deve excluir um caractere; Desfazer deve reinseri-lo.

Manipulação de cadeias de caracteres

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

Suporte de biblioteca em tempo de execução

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

Portabilidade MBCS/Unicode

Usando o arquivo de 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 mapeiam para str, _mbs ou wcs funções, conforme apropriado. Para criar o MBCS, defina o símbolo _MBCS. Para criar Unicode, defina o símbolo _UNICODE. Por padrão, _UNICODE é definido para aplicativos MFC. Para obter mais informações, consulte Generic-Text mapeamentos em tchar.h.

Observação

O comportamento é indefinido se definir tanto o _UNICODE quanto o _MBCS.

Os arquivos de cabeçalho Mbctype.h e Mbstring.h definem funções e macros específicas do MBCS, que você pode precisar em alguns casos. Por exemplo, _ismbblead informa se um byte específico em uma cadeia de caracteres é um byte principal.

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

O que pretende fazer?

Ver também

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