Suporte para MBCSs (conjuntos de caracteres multibyte)
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 de MBCS mais comum são DBCSs (conjuntos de caracteres de byte duplo). 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 líder 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 líderes. Quais intervalos de bytes 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 aspectois seguintes na programação de MBCS.
Caracteres MBCS no ambiente deles podem aparecer em cadeias de caracteres, como nomes de arquivo e diretório.
Operações de edição
As operações de edição em aplicativos MBCS devem operar em caracteres, não em bytes. O acento circunflexo não deve dividir um caractere, a tecla seta para a direita deve mover 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, o tratamento de cadeia de caracteres 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
Abiblioteca de runtime C e o MFC dão suporte à programação unicode, MBCS e byte único. 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ção membro da classe MFC usam funções de tempo de execução portáteis que mapeiam, nas circunstâncias certas, 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 arquivo de cabeçalho tchar.h, você pode criar aplicativos de byte único, MBCS e Unicode 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).