Compatibilidad con Unicode

Unicode es una especificación para admitir todos los juegos de caracteres, incluidos los que no pueden representarse en un solo byte. Si programa para un mercado internacional, le recomendamos que utilice Unicode o juegos de caracteres multibyte (MBCS), o que habilite el programa de modo que pueda compilarlo para ambos cambiando un modificador.

Un carácter ancho es un código de carácter multilingüe de dos bytes. La mayoría de los caracteres que se usan en la informática moderna alrededor del mundo, como los símbolos técnicos o los caracteres de publicación especiales, se puede representar de acuerdo con la especificación Unicode en forma de carácter ancho. Los caracteres que no se pueden representar en un solo carácter ancho pueden representarse en un par Unicode con la característica de suplente Unicode. Puesto que los caracteres anchos siempre tienen un tamaño fijo, 16 bits, con los caracteres anchos se simplifica la programación con juegos de caracteres internacionales.

Una cadena de caracteres anchos se representa como una matriz wchar_t[] y apunta a ella un puntero wchar_t*. Cualquier carácter ASCII se puede representar como un carácter ancho agregando la letra L al principio del carácter. Por ejemplo, L'\0' es el carácter nulo ancho (de 16 bits) de terminación. De manera similar, cualquier literal de cadena ASCII se puede representar como un literal de cadena de caracteres anchos agregando la letra L al principio del literal ASCII (L"Hola").

En general, los caracteres anchos ocupan más espacio en la memoria que los caracteres multibyte, pero se procesan más rápido. Además, en la codificación multibyte no se pueden representar varias configuraciones regionales a la vez, mientras que la representación de Unicode representa simultáneamente a todos los juegos de caracteres del mundo.

Todo el marco MFC está habilitado para Unicode. MFC habilita Unicode con macros portables, como se muestra en la tabla siguiente.

Tipos de datos portables en MFC

Tipo de datos no portable

Reemplazado por esta macro

char

_TCHAR

char*, LPSTR (tipo de datos de Win32)

LPTSTR

const char*, LPCSTR (tipo de datos de Win32)

LPCTSTR

La clase CString utiliza _TCHAR como base y proporciona constructores y operadores para realizar conversiones fácilmente. La mayoría de las operaciones de cadena de Unicode se puede escribir con la misma lógica que se usa para administrar el juego de caracteres ANSI de Windows, con la diferencia de que la unidad de operación básica es un carácter de 16 bits en lugar de un byte de 8 bits. A diferencia de cuando se trabaja con juegos de caracteres multibyte, no es necesario (y no se debe) tratar un carácter Unicode como si fueran dos bytes independientes.

¿Qué desea hacer?

Vea también

Conceptos

Texto y cadenas en Visual C++

Compatibilidad con el uso de wmain