Unicode y compatibilidad con juegos de caracteres multibyte (MBCS)
Algunos lenguajes, por ejemplo, el japonés y el chino, tienen juegos de caracteres de gran tamaño.En la programación de soporte para estos mercados, la biblioteca Microsoft Foundation Class (MFC) está habilitada para dos enfoques diferentes a administrar juegos de caracteres de gran tamaño:
Unicode
Juegos de caracteres multibyte (MBCS)
Compatibilidad de MFC con las cadenas Unicode
La biblioteca de clases completa se habilita condicional para los caracteres Unicode y cadenas.En particular, Unicode- se habilita la clase CString .
UAFXCW.LIB |
UAFXCW.PDB |
UAFXCWD.LIB |
UAFXCWD.PDB |
MFCxxU.LIB |
MFCxxU.PDB |
MFCxxU.DLL |
MFCxxUD.LIB |
MFCxxUD.PDB |
MFCxxUD.DLL |
MFCSxxU.LIB |
MFCSxxU.PDB |
MFCSxxUD.LIB |
MFCSxxUD.PDB |
MFCMxxU.LIB |
MFCMxxU.PDB |
MFCMxxU.DLL |
MFCMxxUD.LIB |
MFCMxxUD.PDB |
MFCMxxUD.DLL |
(xx representa el número de versión de archivo; por ejemplo, “80 " significa la versión 8,0.)
CString se basa en el tipo de datos TCHAR .Si el símbolo _UNICODE se define para una compilación del programa, TCHAR se define como wchar_t, escriba de 16 bits de la codificación de caracteres.Si no, TCHAR se define como char, la codificación de caracteres de 8 bits normal.Por consiguiente, en Unicode, CString se compone de caracteres de 16 bits.Sin Unicode, consta de caracteres de charescrito.
Para completar la programación con Unicode de la aplicación, también debe:
Utilice la macro de _T para codificar condicional cadenas literales para ser portable a Unicode.
Al pasar cadenas, atención de la paga a si los argumentos de la función requieren una longitud en caracteres o una longitud en bytes.La diferencia es importante si utiliza cadenas Unicode.
Versiones portables de uso de las funciones cadena- que administran en tiempo de ejecución de C.
Utilice los tipos de datos siguientes para caracteres y punteros de carácter:
TCHAR Donde utilizaría char.
LPTSTR Donde utilizaría char*.
LPCTSTR Donde utilizaría const char*.CString proporciona el operador LPCTSTR convertir entre CString y LPCTSTR.
CString también proporciona constructores, operadores de asignación, y operadores de comparación Unicode- corriente.
Para obtener información relacionada en Unicode que programa, vea temas de Unicode.referencia de la biblioteca en tiempo de ejecución define las versiones portables de todas sus funciones cadena- que administran.Vea la categoría internacionalización.
Compatibilidad de MFC con cadenas MBCS
La biblioteca de clases también está habilitada para los juegos de caracteres multibyte, pero solo para los juegos de caracteres de doble byte (DBCS).
En un juego de caracteres multibyte, un carácter puede ser uno o dos bytes de ancho.Si es dos bytes de ancho, el primer byte es un “byte especial de jefe” que se elige de un intervalo determinado, dependiendo de que la página de códigos está en uso.Tomado juntos, el jefe y los “bytes finales” especifican una codificación de caracteres única.
Si el símbolo _MBCS se define para una compilación del programa, TCHARescrito, en las que se basa CString , asigna a char.Decida si va a determinar los bytes en CString son bytes iniciales y cuáles son los bytes finales.Las proporciona funciones de la biblioteca en tiempo de ejecución de C para ayudarle a determinar esto.
Bajo DBCS, una cadena determinada puede contener todos los caracteres ANSI del solo- byte, todos los caracteres de doble byte, o una combinación de ambos.Estas posibilidades requieren cuidado especial en cadenas de análisis.Esto incluye los objetos de CString .
[!NOTA]
La serialización de cadena Unicode en MFC puede leer Unicode y cadenas MBCS sin tener en cuenta qué versión de la aplicación que está ejecutando.Los archivos de datos son portables entre Unicode y las versiones de MBCS del programa.
Las funciones miembro deCString que funcionan las versiones especiales de “texto genérico” de uso en tiempo de ejecución de C se denominan, o usan funciones Unicode- con conocimiento pleno.Por tanto, por ejemplo, si una función de CString llamaría normalmente strcmp, llama a la función correspondiente _tcscmp de genérico- texto en su lugar.Dependiendo de cómo se definen los símbolos _MBCS y _UNICODE , _tcscmp asigna como sigue:
_MBCS definido |
_mbscmp |
_UNICODE definido |
wcscmp |
Ninguno de los dos símbolos definidos |
strcmp |
[!NOTA]
Los símbolos _MBCS y _UNICODE son mutuamente excluyentes.
Las asignaciones de función de Genérico- texto para todas las rutinas cadena- que administran en tiempo de ejecución se tratan en Referencia de la biblioteca en tiempo de ejecución de C.En particular, vea Internacionalización.
De igual forma, los métodos de CString se implementan mediante asignaciones de tipo de datos “genéricas”.Para habilitar MBCS y Unicode, MFC utiliza TCHAR para char, LPTSTR para char*, y LPCTSTR para const char*.Éstos garantizar las asignaciones correctas para MBCS o Unicode.