Compatibilidad con Unicode
Unicode es una especificación para admitir todos los juegos de caracteres, incluidos los juegos de caracteres que no pueden representarse en un solo byte. Si se programa para un mercado internacional, conviene considerar la utilización de Unicode o de MBCS (juegos de caracteres multibyte) o habilitar el programa de modo que se pueda generar para cualquiera de ellos cambiando un modificador.
Un carácter ancho es un código de carácter multilingüe de 2 bytes. La mayoría de los caracteres utilizados en el desarrollo moderno de aplicaciones a escala mundial, incluidos los símbolos técnicos y los caracteres especiales de publicación, se pueden representar de acuerdo con la especificación Unicode como caracteres anchos. Los caracteres que no pueden representarse en 1 carácter ancho se pueden representar en un par Unicode con la característica de suplantación de Unicode. Dado que un carácter ancho siempre está representado con una longitud fija de 16 bits, la utilización de caracteres anchos simplifica la programación con juegos de caracteres internacionales.
Una cadena de caracteres anchos se representa como una matriz wchar_t[] y se apunta a ella mediante un puntero wchar_t*. Un carácter ASCII puede representarse como un carácter ancho anteponiendo la letra L al carácter. Por ejemplo, L'\0' es el carácter ancho final NULL (16 bits). De forma similar, un literal de cadena ASCII puede representarse como un literal de cadena de caracteres anchos anteponiendo la letra L al literal ASCII (L"Hola").
Normalmente, los caracteres anchos ocupan más espacio de memoria que los caracteres multibyte, pero se procesan con mayor rapidez. Además, sólo se puede representar una configuración regional a la vez en la codificación multibyte, mientras que todos los juegos de caracteres del mundo están representados de forma simultánea por la representación de Unicode.
El marco de trabajo de MFC está totalmente habilitado para Unicode, excepto en lo referente a las clases de base de datos. ODBC no está habilitado para Unicode. MFC está habilitado para Unicode gracias al uso generalizado de macros portables, como se muestra en la tabla siguiente.
Tipos de datos portables en MFC
Tipo de datos no portable |
Sustituidos por esta macro |
---|---|
char |
_TCHAR |
char*, LPSTR (tipo de datos Win32) |
LPTSTR |
const char*, LPCSTR (tipo de datos Win32) |
LPCTSTR |
La clase CString utiliza _TCHAR como base y proporciona constructores y operadores para realizar conversiones sencillas. La mayoría de operaciones de cadenas para Unicode se pueden crear con la misma lógica utilizada para el control del juego de caracteres ANSI de Windows, salvo en el caso de la unidad básica de funcionamiento que es un carácter de 16 bits en lugar de un byte de 8 bits. A diferencia del trabajo con juegos de caracteres multibyte (MBCS), no es necesario (y no se debe) considerar un carácter Unicode como si se tratara dos bytes diferenciados.
¿Qué desea hacer?
Utilizar wmain para poder pasar argumentos de caracteres anchos a mi programa
Obtener información sobre asignaciones de texto genérico para la portabilidad de ancho de byte