miércoles, 23 de abril de 2008

Entendiendo unicode

Originalmente de aqui:
http://www.codersource.net/cpp_unicode.html

Ver tambien :http://www.microsoft.com/typography/unicode/cs.htm
Y por fin esto: http://www.nada.kth.se/i18n/ucs/unicode-iso10646-oview.html

Los ordenadores solo entienden de números. Cada caracter está representado por un número, que es finalmente dibujado como un caracter en las pantallas. Esto supone un importante problema en sistemas existentes para escribir en lenguajes distintos que el inglés. La primera razon es la falta de suficientes caracteres en la codificación ASCII.The primary reason being the non-availability of enough characters in ASCII encoding. Así que, obviamente, la internacionalización de las aplicaciones se convierte en un gran problema.

ASCII y mecanismo de codificación (Code Page).
El formato ASCII usa un byte o 8 bits para cada carcter. Esto significa que, hay 256 caracteres. Si un programa escribe en otro lenguaje, el conjunto de caracteres se replaza con otro, Windows inicialmente usaba un esquema llamado Code Page. Para cada lenguage, usaba un codepage diferente. Si era necesaria una versión de Windows en chino, entonces habia que usar el codepage Chino. El problema esta en que solo se soporta un lenguaje. Si una persona en Europa se conecta a un US server, Solo verá caracteres en Ingles y viceversa.

Unicode(1991):

La industria creo un nuevo estandard, el Unicode.
El unicode consiste en que cada caracter un número (sin número límite en teoría).
Actualmente hay mas de 90.000 entradas en unicode (mas de 16 bits cuidadin)

Caracteres Multi-Byte (por ejemplo caracteres de doble byte):
Una solución propuesta para el problema anterior era contar con conjuntos de caracteres multibyte . En este esquema, un caracter puede ser representado como un solo byte o de doble byte. Si se trata de un esquema de doble byte, el byte principal tendrá la información sobre su condición de doble byte. Por lo tanto, las aplicaciones tendrán que comprobar el estado del byte principal para ver si es un doble byte. El VC + + proporciona una API "isleadbyte (int c)" para comprobar si un byte es un caracter o es el byte primero.
Pero la industria pensó que esto del multibyte para ficheros esta bien, pero para la representación de datos en el ordenador es un lio.


Que es ISO 10646 ?(1993 )
Es una propuesta de parte de Unicode con solo 16 bits.
UCS-2 Es una representación de caracteres con dos bytes que representa ISO 10646

La codificacion es UCS-2 por lo tanto trata los caracteres como dos bytes de solo 'parte de unicode'
Esta es la elegida por Microsoft y otros para quitarse de encima el problema de los multibyte.
Windows codifica los caracteres con dos bytes cada uno.

CUANDO MICROSOFT HABLA DE UNICODE ESTA HABLANDO DE ISO 10646


ISO 10646 y UNICODE trabajan al unísono pero......
UCS-2 NO PUEDE CON TODO EL UNICODE
UCS-2 NO ES UNA CODIFICACION ADMITIBLE PARA FICHEROS (LOS DUPLICA).

No hay comentarios: