soporte para Unicode

El estándar Unicode es un código de caracteres estandarizado diseñado para codificar textos internacionales para su visualización y almacenamiento. Utiliza un valor exclusivo de 16 o 32–bit para representar cada carácter individual, independientemente de la plataforma, el idioma o el programa. Utilizando Unicode, puede desarrollar un producto de software que funcionará con diversas plataformas, idiomas y países o regiones. Unicode también permite que los datos sean transportados a través de muchos sistemas diferentes.

Hay dos formas diferentes de soporte Unicode disponibles desde el compilador y el tiempo de ejecución. En esta sección se describen las dos formas de soporte Unicode, así como algunas de las características y consideraciones para utilizar dicho soporte. Para obtener información adicional sobre Unicode, visite la Página de inicio de Unicode en www.unicode.org.

El primer tipo de soporte Unicode es soporteUCS-2. Cuando se especifica la opción LOCALETYPE (*LOCALEUCS2) en el mandato de compilación, el compilador y el tiempo de ejecución utilizan caracteres anchos (es decir, caracteres del tipo wchar_t) y series de caracteres anchos (es decir, series del tipo wchar_t *) que representan caracteres Unicode de 2 bytes. Los caracteres estrechos (no anchos) y las series de caracteres estrechos representan caracteres EBCDIC, del mismo modo que lo hacen cuando el soporte UCS-2 no está habilitado. Los caracteres Unicode representan puntos de código en CCSID 13488.

El segundo tipo de soporte Unicode es el soporte UTF-8 o UTF-32 (también conocido como soporte UTF). Cuando se especifica la opción LOCALETYPE (*LOCALEUTF) en el mandato de compilación, el compilador y el tiempo de ejecución utilizan caracteres anchos y series de caracteres anchos que representan caracteres Unicode de 4 bytes. Cada carácter de 4 bytes representa un único carácter UTF-32 . Los caracteres estrechos y las series de caracteres estrechos representan caracteres UTF-8 . Cada carácter UTF-8 tiene un tamaño de 1 a 4 bytes. La mayoría de los caracteres normales tienen un tamaño de un solo byte y, de hecho, todos los caracteres ASCII de 7 bits se correlacionan directamente con UTF-8 y tienen un tamaño de 1 byte. Los caracteres UTF-8 representan puntos de código en CCSID 1208.

Cuando el soporte de UTF está habilitado, no sólo los caracteres anchos pasan a ser UTF-32 Unicode, sino que los caracteres estrechos también pasan a ser UTF-8 Unicode. Como ejemplo, considere el siguiente programa HelloWorld .
#include <stdio.h>

int main() {    
   printf("Hello World\n");    
   return 0; 
}
Cuando este programa se compila con soporte UTF, la serie de caracteres se almacena en el programa como caracteres UTF-8 y no caracteres EBCDIC. La función printf() lo sabe y puede analizar los caracteres UTF-8 y generar la salida como se esperaba. Sin embargo, si este programa ha llamado a alguna otra función proporcionada por el usuario que no sabía cómo manejar los caracteres UTF-8 , la otra función podría producir resultados o comportamientos incorrectos.