Compartir a través de


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 está programando para un mercado internacional, se recomienda usar Unicode o un juego de caracteres multibyte (MBCS). O bien, codifique el programa para que pueda compilarlo mediante el cambio de un conmutador.

Un carácter ancho es un código de carácter multilingüe de dos bytes. Decenas de miles de caracteres, que incluyen casi todos los caracteres usados en la informática moderna en todo el mundo, incluidos símbolos técnicos y caracteres de publicación especiales, se pueden representar según la especificación Unicode como un solo carácter ancho codificado mediante UTF-16. Los caracteres que no se pueden representar en un solo carácter ancho pueden representarse en un par Unicode con la característica de par suplente de Unicode. Dado que casi todos los caracteres de uso común se representan en UTF-16 en un solo carácter ancho de 16 bits, el uso de caracteres anchos simplifica la programación con juegos de caracteres internacionales. Los caracteres anchos codificados con UTF-16LE (para little-endian) son el formato de carácter nativo para Windows.

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 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, wchar_t _TCHAR
char*, LPSTR (tipo de datos de Win32), LPWSTR LPTSTR
const char*, LPCSTR (tipo de datos de Win32), LPCWSTR 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. Sin embargo, tiene que tratar con la posibilidad de un solo carácter representado por un par suplente de caracteres anchos. En general, no escriba código que suponga que la longitud de una cadena es igual que el número de caracteres, ya sea estrecho o ancho, que contiene.

¿Qué desea hacer?

Consulte también

Texto y cadenas
Compatibilidad con el uso de wmain