Compartir a través de


Compatibilidad con los juegos de caracteres multibyte (MBCS)

Los juegos de caracteres multibyte (MBCS) son un enfoque anterior a la necesidad de admitir juegos de caracteres, como el japonés y el chino, que no pueden representarse en un solo byte. Si está realizando nuevo desarrollo, debe utilizar Unicode para todas las cadenas de texto, excepto quizás las cadenas del sistema que los usuarios finales no ven. MBCS es una tecnología heredada y no se recomienda para el nuevo desarrollo.

La implementación más habitual de MBCS son los juegos de caracteres de doble byte (DBCS). Visual C++ en general, y MFC en particular, están totalmente habilitados para DBCS.

Para obtener ejemplos, vea los archivos de código fuente de MFC.

Para las plataformas utilizadas en mercados cuyos idiomas utilizan juegos de caracteres de gran tamaño, la mejor alternativa a Unicode es MBCS. MFC admite MBCS mediante el uso de tipos de datos internacionalizables y funciones en tiempo de ejecución de C. Los programadores deben hacer lo mismo en su propio código.

En MBCS, los caracteres están codificados en uno o dos bytes. En los caracteres de dos bytes, el primero, o byte inicial, indica que él mismo y el byte siguiente deben interpretarse como un solo carácter. El primer byte procede de un intervalo de códigos reservado para su utilización como bytes iniciales. Los intervalos de bytes que pueden ser bytes iniciales dependen de la página de códigos que se utiliza. Por ejemplo, la página de códigos japonesa 932 utiliza el intervalo de 0x81 a 0x9F como bytes iniciales, pero la página de códigos coreana 949 utiliza un intervalo distinto.

Conviene tener en cuenta los siguientes aspectos en la programación con MBCS.

Los caracteres MBCS del entorno pueden aparecer en cadenas como nombres de archivo y de directorio.

Operaciones de edición

Las operaciones de edición en aplicaciones MBCS se deben ejecutar en caracteres, no en bytes. El símbolo de intercalación no debe dividir un carácter, la tecla de dirección DERECHA debe desplazar un carácter hacia la derecha, y así sucesivamente. Eliminar debe eliminar un carácter. Deshacer debe volver a insertarlo.

Control de cadenas

En una aplicación que utiliza MBCS, el control de cadenas plantea problemas especiales. Los caracteres de ambos anchos se mezclan en una sola cadena; por consiguiente, no se debe olvidar de que hay que comprobar los bytes iniciales.

Compatibilidad con bibliotecas en tiempo de ejecución

MFC y la biblioteca en tiempo de ejecución de C admiten la programación de un solo byte, MBCS y Unicode. Las cadenas de un solo byte se procesan con la familia str de funciones en tiempo de ejecución, las cadenas MBCS se procesan con las funciones _mbs correspondientes, y las cadenas Unicode se procesan con las funciones wcs correspondientes. Las implementaciones de funciones miembro de clase de MFC utilizan funciones en tiempo de ejecución portables, que se asignan bajo las circunstancias correctas a la familia str normal de funciones, las funciones MBCS o las funciones Unicode, como se describe en "Portabilidad de MBCS/Unicode".

Portabilidad de MBCS/Unicode

Si se utiliza el archivo de encabezado tchar.h, se pueden compilar aplicaciones de un solo byte, MBCS y Unicode a partir de los mismos códigos fuente. Tchar.h define macros que empiezan por _tcs, que se asignan a las funciones str, _mbs o wcs, según proceda. Para compilar MBCS, se ha de definir el símbolo _MBCS. Para compilar Unicode, defina el símbolo _UNICODE. De forma predeterminada, _UNICODE está definido para aplicaciones MFC. Para más información, consulte Asignaciones de texto genérico en tchar.h.

Nota:

El comportamiento no se define si se definen conjuntamente _UNICODE y _MBCS.

Los archivos de encabezado Mbctype.h y Mbstring.h definen macros y funciones específicas de MBCS, que pueden ser necesarias en algunos casos. Por ejemplo, _ismbblead indica si un determinado byte de una cadena es un byte inicial.

Con fines de portabilidad internacional, se debe programar el programa con Unicode o con los juegos de caracteres multibyte (MBCS).

¿Qué desea hacer?

Consulte también

Texto y cadenas
Compatibilidad con MBCS en Visual C++