BotonMenu
BotonIndice

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL

PASCAL CON FREE PASCAL


2. TIPOS DE DATOS SIMPLES.
2.4. CODIFICACIÓN DE CARACTERES.
2. TIPOS DE DATOS SIMPLES.
2.4. CODIFICACIÓN DE CARACTERES.
2. TIPOS DE DATOS SIMPLES.
2.4. CODIFICACIÓN DE CARACTERES.

SIGUIENTE

SIGUIENTE

SIGUIENTE


‒ Codificación de caracteres.

Antes de explicar los tipos de datos para caracteres que ofrece el compilador Free Pascal, primero explicaré un poco sobre la codificación de caracteres. La codificación de caracteres son normas para relacionar un código con un determinado carácter, que pueden ser letras, símbolos, cifras o ideogramas de un sistema de escritura y caracteres de control (ejemplo, el carácter de control que indica a la impresora un salto de página). El código que se usa para relacionar un determinado carácter, puede ser una serie de impulsos eléctricos, un número u otro sistema de representación.

El ejemplo más antiguo de codificación de caracteres es el código Morse, que hace corresponder los caracteres con un código representado por puntos y rallas. Pero uno de los primeros sistemas de codificación de caracteres que usaron códigos digitales fue el BCDIC (Binary Coded Decimal Interchange Code ó Código de Intercambio decimal codificado en binario), en donde sus códigos usaban 6 dígitos binarios, es decir se podían representar un máximo de 64 caracteres (26=64). Conforme paso el tiempo se creó el código ASCII (American Standard Code for Information Interchange), que permitía usar códigos digitales con 7 dígitos binarios, es decir permitía representar un máximo de 128 caracteres (27=128).

Debido a que los códigos ASCII usan sólo 7 dígitos binarios, muchos fabricantes de computadoras, programas y países, extendieron la codificación a 8, 16 o más dígitos binarios; permitiendo cubrir símbolos específicos para otros idiomas como el japonés, hindú, el idioma chino, etc. Esta extensión creo muchas variantes de codificación de caracteres, ocasionando que algunas variantes representen por ejemplo la letra ñ con el número 164, y otros con el número 241, otros problemas que surgieron, fue que algunas codificaciones usaban una longitud variable de 8, 16 o más dígitos binarios para representar los caracteres, y algunas de ellos no tenían los 128 caracteres originales completos de los códigos ASCII. A continuación una tabla resumen con algunas de las codificaciones de caracteres más conocidas:


‒ Codificación de caracteres conocidas.
Codificación Descripción

ASCII.

Creado por el ANSI, basado en caracteres latinos que se usan en el idioma inglés moderno. 7 bits.

Big5

Código de caracteres usado en Taiwan, Hong kong y Macao, para ideogramas tradicionales. Variantes: Big5-HKSCS.

EUC

Extended Unix Code, es una codificación de caracteres de longitud variable (multibyte), usada principalmente por japoneses, koreanos y el chino simplificado. Su codificación está basado en el ISO -2022. Variantes: EUC-JP, EUC-CN, EUC-KN, EUC-TW.

GB2312

Codificación de caracteres de la Republica popular de china. GB son abreviaturas de Guojia Biaozhun (国家标准), que significa Estándar Nacional. Se creó en 1980.

GB18030

Codificación de caracteres de la Republica popular de china. GB son abreviaturas de Guojia Biaozhun (国家标准), que significa Estándar Nacional. Se creó en 2000, actualizado en 2005.

IBM code pages.

IBM, creó muchas codificaciones para distintos lugares o países, que los agrupa en varias páginas de codificación (code pages).

Algunas variantes de estas codificaciones son: IBM-Thai, IBM 00858, IBM 037, IBM 01140 hasta IBM 01149, IBM 273, IBM 277, IBM 278, IBM 280, IBM 284, IBM 285, IBM 297, IBM 437, IBM 500, IBM 775, IBM 850, IBM 852, IBM 855, IBM 857, IBM 860 hasta IBM 866, IBM 868 hasta IBM 871, IBM 918, IBM 1026, IBM 1047, etc.

ISO

El Organismo de estándares internacionales creo algunas de las siguientes codificaciones: ISO-2022, ISO-8859-1 hasta ISO-8859-9, ISO-8859-13 hasta ISO-8859-15.

JIS

El JIS (Japanese Industrial Standards), que es el encargado de especificar los estándares industriales usados en Japón, creo las siguientes codificaciones: JIS X0201, JIS X0208. JIS X0212, JIS X0213 y el JIS X0202 conocido como el ISO-2022-JP.

KOI8

Codificación de caracteres de 8 bits, diseñado para el idioma ruso, alfabeto cirílico, el idioma búlgaro. Una derivación es el KOI8-U, que agrega caracteres para el idioma ucraniano.

TIS-620

Es el código de caracteres más común usado para el idioma Thai. (Tailandia)

Windows code pages

Windows creo estas codificaciones usados en distintos lugares o países, que los agrupo en varios códigos de página y que se conocieron como códigos de página ANSI. Algunas variantes de estas codificaciones son: Win-1250, Win-1251, Win-1252, Win-1253, Win-1254, Win-1255, Win-1256, Win-1257, Win-1258, etc. Windows por compatibilidad también definió los códigos de página OEM, los códigos de páginas OEM son algunos de los códigos de página creados por IBM.



Debido a la cantidad enorme de codificación de caracteres que se crearon, un grupo de fabricantes de computadoras y programas, universidades y profesionales, se decidieron por crear los códigos UNICODE. Unicode originalmente fue diseñado para usar un código digital de 16 dígitos binarios, pero actualmente fue extendido a 24 dígitos binarios para representar sólo caracteres desde 0 hasta 1 114 112. (Desde $000000 hasta $10FFFF en hexadecimal.). Estos códigos de 24 dígitos binarios se definen en Unicode como puntos de código. Los puntos de código de Unicode están divididos en 16 planos. Uno de ellos es el Plano 0, conocido como BMP (Basic Multilingual Plane) que se usa para representar 65536 caracteres, desde 0 hasta 65535 (16 dígitos binarios). Debido a que muchos sistemas informáticos no manejan la información en puntos de código de 24 dígitos binarios, Unicode define tres formas de codificación de caracteres UTF8, UTF16 yUTF32 en donde las siglas UTF significan "Unicode transformation format" que en español sería Formatos de Transformación Unicode.

‒ UTF8

Es una codificación de caracteres de longitud variable para los puntos de código de 24 dígitos binarios de Unicode. Esta codificación de caracteres de longitud variable permite representar caracteres en una secuencia de 1 a 4 bytes. Una propiedad importante de la codificación es que los dígitos binarios iniciales de una secuencia de 1 a 4 bytes, determinan la longitud en bytes de la secuencia. Es decir si la secuencia empieza con el digito binario 0, entonces es de un byte; si la secuencia empieza con los dígitos binarios 110 entonces es de dos bytes; si la secuencia empieza con los dígitos binarios 1110 entonces es de 3 bytes; y por último si la secuencia empieza con los dígitos binarios 11110 entonces es de 4 bytes. Los bytes siguientes al primer byte de una secuencia mayor a 1 byte, siempre empiezan con los dígitos binarios 10.
La tabla a continuación, resume la forma de codificación del rango de los puntos de código desde $000000 hasta $10FFFF en hexadecimal. La letra x indica los dígitos binarios disponibles para codificar el punto de código de Unicode.


‒ Codificacion de códigos UTF8
Rango de los puntos de código Unicode.(hexadecimal) UTF8 secuencia de bytes.(binario)

$000000 hasta $00007F

0xxxxxxx

$000080 hasta $0007FF

110xxxxx 10xxxxxx

$000800 hasta $00FFFF

1110xxxx 10xxxxxx 10xxxxxx

$010000 hasta $10FFFF

11110xxx 10xxxxxx 10xxxxxx 10xxxxxx



A continuación unos ejemplos de codificación:


‒ Ejemplos de codifiación UTF8
Caracter = Punto de código (hexadecimal) = binario UTF8 secuencia de bytes. (binario)

{ = $00007B = 00000000 00000000 01111011

01111011

£ = $0000A3 = 00000000 0000000010100011

11000010 10100011

ñ = $0000F1 = 00000000 0000000011110001
11000011 10110001
€ = $0020AC = 00000000 00100000 10101100
11100010 10000010 10101100
マ = $00FF8F = 00000000 11111111 10001111
11101111 10111110 10001111
𤭢 = $024B62 = 00000010 01001011 01100010

11110000 10100100 10101101 10100010



‒ UTF16

Esta codificación de caracteres de longitud variable permite representar caracteres en una secuencia de 2 a 4 bytes. Cada punto de código entre $000000 y $00FFFF en hexadecimal se codifica, sin cambios, utilizando 2 bytes (16 dígitos binarios). Este rango se corresponde con el Plano 0 (BMP), por lo que la gran mayoría de los caracteres de uso común se codifican con 16 dígitos binarios. Para los códigos mayores a $00FFFF en hexadecimal se codifican en 4 bytes. A continuación una tabla, que resume la forma de codificación del rango de los puntos de código desde $000000 hasta $10FFFF:


‒ Codificación de códigos UTF16
Rango de los puntos de código Unicode. (hexadecimal) UTF16

$000000 hasta $00FFFF

No se codfican. Ejemplo:

caracter = €.

punto de código = $0020AC
UTF16 = $20AC

$010000 hasta $10FFFF

En este caso se usan cuatro bytes y se procede de acuerdo al siguiente ejemplo:

caracter = 𤭢

punto de código = $024B62

proceso de codificación:

1) Restar $10000 en hexadecimal.

$024B62-$10000 = $14B62

binario = 00000001 01001011 01100010

2) Ubicar los bits en 110110xx xxxxxxxx 110111xx xxxxxxxx

binario = 11011000 01010010 11011111 01100010

hexadecimal = $D852DF62



‒ UTF32

Esta codificación es de longitud fija, permitiendo colocar todos los puntos de código sin necesidad de transformar o convertir. Su longitud es de 4 bytes (32 dígitos binarios).

‒ BOM Byte Order of Mark.

Son una secuencia de códigos que nos permite identificar si un archivo de texto o flujo de caracteres esta codificado en UTF8, UTF16, o UTF32, la siguiente tabla describe su significado y su uso. El BOM siempre debe estar al inicio de un archivo de texto o flujo de caracteres.


‒ Bytes of Mark (BOM).
BOM valores en hexadecimal Descripción
EF BB BF
Para identificar si el archivo o flujo de caracteres es UTF8

FE FF

Para identifcar si el archivo o flujo de caracteres es UTF16 Big Endian, con los bytes en orden natural. Ejemplo:

caracter = 𤭢

punto de código = $024B62

UTF16 Big Endian = $D852DF62

FF FE

Para identifcar si el archivo o flujo de caracteres es UTF16 Little Endian, con los bytes en orden inverso. Ejemplo:

caracter = 𤭢

punto de código = $024B62

UTF16 Little Endian = $52D862DF

0000 FEFF

Para identifcar si el archivo o flujo de caracteres es UTF32 Big Endian, con los bytes en orden natural. Ejemplo:

caracter = 𤭢

punto de código = $024B62

UTF32 Big Endian = $00024B62

FFFE 0000

Para identifcar si el archivo o flujo de caracteres es UTF32 Little Endian, con los bytes en orden inverso. Ejemplo:

caracter = 𤭢

punto de código = $024B62

UTF32 Little Endian = $624B0200



Los sistemas operativos son los encargados de implementar y ofrecer una codificación de caracteres a usar por los programas. Actualmente la mayoría de los Sistemas Operativos ofrecen codificación de caracteres en Unicode. Usando las otras codificaciones de caracteres para compatibilidad con programas antiguos.




SIGUIENTE
SIGUIENTE
SIGUIENTE


 
‒ Comentarios y sugerencias.

Agradezco de antemano, todo comentario, sugerencia, y donativo (a través de Paypal me), que ayude a mejorar los contenidos educativos de Conoce 3000. Además, cualquier pregunta o duda que tengas lo puedes hacer por este medio. Pero, todo contenido que pueda resultar ofensivo, malicioso, racista, sexista, discriminatorio, obsceno, vulgar será eliminado.








PORTADA |  INTERESANTE |  APUNTES |  LIBROS |  GALERIA


Creative Commons License


Todos los textos, imágenes y videos de Conoce3000 estan colocados bajo una licencia : Creative Commons Reconocimiento-NoComercial 3.0 Unported License.