Unicode
Unicode es un estándar de codificación de caracteres en todo el mundo. El sistema usa Unicode exclusivamente para la manipulación de caracteres y cadenas. Para obtener una descripción detallada de todos los aspectos de Unicode, consulte El estándar Unicode.
En comparación con los mecanismos más antiguos para controlar los datos de caracteres y cadenas, Unicode simplifica la localización de software y mejora el procesamiento de texto multilingüe. Mediante el uso de Unicode para representar datos de caracteres y cadenas en las aplicaciones, puede habilitar las funcionalidades de intercambio de datos universales para el marketing global, mediante un único archivo binario para cada código de caracteres posible. Unicode hace lo siguiente:
- Permite que cualquier combinación de caracteres, extraída de cualquier combinación de scripts y lenguajes, coexista en un único documento.
- Define la semántica de cada carácter.
- Estandariza el comportamiento del script.
- Proporciona un algoritmo estándar para texto bidireccional.
- Define asignaciones cruzadas a otros estándares.
- Define varias codificaciones de su juego de caracteres único: UTF-7, UTF-8, UTF-16 y UTF-32. La conversión de datos entre estas codificaciones es sin pérdida.
Unicode admite numerosos scripts usados por idiomas de todo el mundo y también un gran número de símbolos técnicos y caracteres especiales usados en la publicación. Los scripts admitidos incluyen, entre otros, latín, griego, cirílico, hebreo, árabe, devanagari, tailandés, han, hangul, hiragana y katakana. Los idiomas admitidos incluyen, entre otros, alemán, francés, inglés, griego, ruso, hebreo, árabe, hindi, tailandés, chino, coreano y japonés. Actualmente, Unicode puede representar la gran mayoría de caracteres en el uso de equipos modernos en todo el mundo y sigue actualizándose para que sea aún más completo.
Las funciones habilitadas para Unicode se describen en Convenciones para prototipos de función. Estas funciones usan codificación UTF-16 (caracteres anchos), que es la codificación más común de Unicode y la que se usa para la codificación Unicode nativa en sistemas operativos Windows. Cada valor de código tiene un ancho de 16 bits, a diferencia del enfoque de la página de códigos anterior a los datos de caracteres y cadenas, que usa valores de código de 8 bits. El uso de 16 bits permite la codificación directa de 65 536 caracteres. De hecho, el universo de símbolos usados para transcribir idiomas humanos es incluso mayor que eso, y los puntos de código UTF-16 del intervalo U+D800 a U+DFFF se usan para formar pares suplentes, que constituyen codificaciones de 32 bits de caracteres adicionales. Consulte Suplentes y caracteres complementarios para obtener más información.
El juego de caracteres Unicode incluye numerosos caracteres combinados, como U+0308 (" ́"), una combinación de dieresis o umlaut. Unicode a menudo puede representar el mismo glifo en una forma ''compuesta'' o ''descomposed'': por ejemplo, la forma compuesta de "Ä" es el único punto de código Unicode "Ä" (U+00C4), mientras que su forma descomponida es "A" + " ́" (U+0041 U+0308). Unicode no define un formulario compuesto para cada glifo. Por ejemplo, la minúscula vietnamita "o" con circunflex y tilde ("ỗ") está representada por U+006f U+0302 U+0303 (o + Circunflex + Tilde). Para obtener más información sobre la combinación de caracteres y problemas relacionados, consulte Uso de la normalización Unicode para representar cadenas.
Para la compatibilidad con entornos de 8 y 7 bits, Unicode también se puede codificar como UTF-8 y UTF-7, respectivamente. Aunque las funciones habilitadas para Unicode en Windows usan UTF-16, también es posible trabajar con datos codificados en UTF-8 o UTF-7, que se admiten en Windows como páginas de códigos de conjunto de caracteres multibyte.
Las nuevas aplicaciones de Windows deben usar UTF-16 como representación de datos interna. Windows también proporciona una amplia compatibilidad con las páginas de códigos y el uso mixto en la misma aplicación es posible. Incluso las nuevas aplicaciones basadas en Unicode a veces tienen que trabajar con páginas de códigos. Las razones de esto se describen en páginas de códigos.
Una aplicación puede usar las funciones MultiByteToWideChar y WideCharToMultiByte para convertir entre cadenas basadas en páginas de códigos y cadenas Unicode. Aunque sus nombres hacen referencia a "MultiByte", estas funciones funcionan igualmente bien con páginas de códigos de juego de caracteres de un solo byte (SBCS), juego de caracteres de doble byte (DBCS) y juego de caracteres multibyte (MBCS).
Normalmente, una aplicación de Windows debe usar UTF-16 internamente, convirtiendo solo como parte de una "capa fina" a través de la interfaz que debe usar otro formato. Esta técnica se defiende contra la pérdida y la corrupción de los datos. Cada página de códigos admite caracteres diferentes, pero ninguno de ellos admite el espectro completo de caracteres proporcionado por Unicode. La mayoría de las páginas de códigos admiten subconjuntos diferentes, codificados de forma diferente. Las páginas de códigos para UTF-8 y UTF-7 son una excepción, ya que admiten el juego de caracteres Unicode completo y la conversión entre estas codificaciones y UTF-16 no se pierde.
Los datos convertidos directamente de la codificación usada por una página de códigos a la codificación usada por otro están sujetas a daños, ya que el mismo valor de datos en diferentes páginas de códigos puede codificar un carácter diferente. Incluso cuando la aplicación está convirtiendo lo más cerca posible de la interfaz, debe pensar cuidadosamente en el intervalo de datos que se van a controlar.
Los datos convertidos de Unicode a una página de códigos están sujetos a pérdida de datos, ya que es posible que una página de códigos determinada no pueda representar todos los caracteres usados en esos datos Unicode concretos. Por lo tanto, tenga en cuenta que WideCharToMultiByte podría perder algunos datos si la página de códigos de destino no puede representar todos los caracteres de la cadena Unicode.
Al modernizar las aplicaciones heredadas basadas en páginas de códigos para usar Unicode, puede usar funciones genéricas y la macro TEXT para mantener un único conjunto de orígenes desde los que compilar dos versiones de la aplicación. Una versión admite Unicode y la otra funciona con páginas de códigos de Windows. Con este mecanismo, puede convertir incluso aplicaciones muy grandes de páginas de códigos de Windows a Unicode mientras mantiene los orígenes de aplicación que se pueden compilar, compilar y probar en todas las fases de la conversión. Para obtener más información, vea Convenciones para prototipos de función.
Los caracteres Unicode y las cadenas usan tipos de datos distintos de los de caracteres y cadenas basados en páginas de códigos. Junto con una serie de macros y convenciones de nomenclatura, esta distinción minimiza la posibilidad de mezclar accidentalmente los dos tipos de datos de caracteres. Facilita la comprobación de tipos del compilador para asegurarse de que solo se usan valores de parámetro Unicode con funciones que esperan cadenas Unicode.
Temas relacionados