Partilhar via


Suporte para conjuntos de caracteres Multibyte (MBCSs)

Conjuntos de caracteres multibyte (MBCSs) são uma alternativa para o Unicode para oferecer suporte a conjuntos de caracteres, como japonês e chinês, o que não podem ser representados em um único byte. Se você está programando para um mercado internacional, considere usar Unicode ou MBCS ou permitindo que o seu programa para construí-lo para um alterando um switch.

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

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

Para plataformas usadas nos mercados cujos idiomas usam conjuntos de caracteres grandes, a melhor alternativa para Unicode é MBCS. MFC oferece suporte a MBCS, usando os tipos de dados de internationalizable 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 o byte inicial, sinais de que ele e o byte seguinte são interpretados como um caractere. O primeiro byte vem de um intervalo de códigos reservada para uso como bytes de cliente potencial. Os intervalos de bytes podem ser bytes do cliente potencial depende da página de código em uso. Por exemplo, a página de código japonês 932 usa o intervalo de 0x81 através de 0x9F como bytes de cliente potencial, mas a página de código coreano 949 usa um intervalo diferente.

Considere o seguinte em sua programação de MBCS.

  • Caracteres MBCS no ambiente
    Caracteres MBCS podem aparecer em seqüências de caracteres, como nomes de arquivo e diretório.

  • Operações de edição
    Edição de operações em aplicativos de MBCS deve operar em caracteres, não em bytes. O cursor não deve dividir um caractere, a tecla de seta para a direita deve mover um caractere à direita e assim por diante. Excluir deve excluir um caractere; Desfazer deve inseri-lo novamente.

  • Manipulação de seqüência de caracteres
    Em um aplicativo que usa MBCS, manipulação de seqüência de caracteres apresenta problemas especiais. Caracteres de ambas as larguras estão misturados em uma única seqüência de caracteres; Portanto, você deve se lembrar verificar se os bytes de cliente potencial.

  • Suporte de biblioteca Run-time.
    A biblioteca de tempo de execução c e o MFC suportam Unicode de byte único e MBCS de programação. Seqüências de caracteres de byte único são processadas com o str família de funções de tempo de execução, seqüências de caracteres MBCS são processados com correspondente _mbs funções e seqüências de caracteres Unicode são processados com correspondente wcs funções. Implementações de função de membro de classe MFC usam funções de tempo de execução portátil que mapeiam, sob determinadas circunstâncias, como o normal str da família de funções, as funções MBCS ou as funções do Unicode, conforme descrito em "MBCS/Unicode portabilidade".

  • Portabilidade MBCS/Unicode
    Usando o arquivo de cabeçalho de Tchar.h, você pode criar um byte, MBCS e Unicode aplicativos a partir das mesmas fontes. TCHAR.h define macros prefixadas com _tcs , que mapeiam para str, _mbs, ou wcs funções, conforme apropriado. Para construir MBCS, definir o símbolo _ MBCS do arquivo. Para construir o Unicode, definir o símbolo _ Unicode. Por padrão, _ MBCS do arquivo está definido para aplicativos MFC. Para obter mais informações, consulte Os mapeamentos de texto genérico na Tchar.h.

ObservaçãoObservação

Comportamento é indefinido se você definir ambos _ Unicode e _ MBCS do arquivo.

Os arquivos de cabeçalho de Mbctype.h e Mbstring.h definem funções específicas de MBCS e macros, que pode ser necessário em alguns casos. Por exemplo, _ismbblead indica se um byte específico em uma seqüência de caracteres é um cliente potencial byte.

Seu programa com o código para portabilidade internacional, Unicode ou (MBCSs) de conjuntos de caracteres multibyte.

O que você deseja fazer?

Consulte também

Conceitos

Conjuntos de caracteres em C++

Suporte MBCS no Visual C++