Ir al contenido

Codificación de caracteres

De Wikipedia, la enciclopedia libre

La codificación de caracteres es el método que permite convertir un carácter de un lenguaje natural (como el de un alfabeto o silabario) en un símbolo de otro sistema de representación, como un número o una secuencia de pulsos electrónicos en un sistema electrónico aplicando normas o reglas de codificación.

Definen la forma en la que se codifica un carácter dado en un símbolo en otro sistema de representación. Ejemplos de esto son el código Morse, la norma ASCII o la UTF-8, entre otros.

ASCII

[editar]

Por estar íntimamente ligado al octeto (y por consiguiente a los enteros que van del 0 al 127), el problema que presenta es que no puede codificar más que 128 símbolos diferentes (128 es el número total de diferentes configuraciones que se pueden conseguir con 7 dígitos binarios o digitales (0000000, 0000001, …, 1111111), usando el octavo dígito de cada octeto (bit o dígito de paridad) para detectar algún error de transmisión). Un cupo de 128 es suficiente para incluir mayúsculas y minúsculas del abecedario inglés, además de cifras, puntuación, y algunos «caracteres de control» (por ejemplo, uno que instruye a una impresora que pase a la hoja siguiente), pero el ASCII no incluye ni los caracteres acentuados ni el comienzo de interrogación que se usa en castellano, ni tantos otros símbolos (matemáticos, letras griegas, …) que son necesarios en muchos contextos.

ASCII Extendido

[editar]

Debido a las limitaciones del ASCII se definieron varios códigos de caracteres de 8 bits, entre ellos el ASCII extendido. Sin embargo, el problema de estos códigos de 8 bits es que cada uno de ellos se define para un conjunto de lenguas con escrituras semejantes y por tanto no dan una solución unificada a la codificación de todas las lenguas del mundo. Es decir, no son suficientes 8 bits para codificar todos los alfabetos y escrituras del mundo.

Unicode

[editar]

Como solución a estos problemas, desde 1991 se ha acordado internacionalmente utilizar la norma Unicode, que es una gran tabla, que en la actualidad asigna un código a cada uno de los más de cincuenta mil símbolos, los cuales abarcan todos los alfabetos europeos, ideogramas chinos, japoneses, coreanos, muchas otras formas de escritura, y más de un millar de símbolos locales. Hasta ahora, el UNICODE es el sistema más extendido.

Normas de Transmisión

[editar]

Las normas de transmisión tienen como objetivo definir la forma en que los caracteres codificados (utilizando las normas de codificación) son transmitidos en el canal de comunicaciones (por ejemplo Internet)

Actualmente, en Internet los mensajes se transmiten en paquetes que siempre constan de un número entero de octetos, y la detección de error ya no se hace con el octavo dígito de cada octeto, sino con octetos especiales que automáticamente se agregan a cada paquete. Las normas de transmisión se limitan a especificar una correspondencia, reversible, entre códigos (que representan caracteres), y secuencias de octetos (que han de ser transmitidos en calidad de datos).

Tablas tipográficas

[editar]

Pero, finalmente, para cartearse electrónicamente en chino simplificado (por ejemplo) falta un detalle importante:

La tabla que el Consorcio Unicode publica para ser leída por humanos, contiene una representación gráfica o descripción, de cada carácter incluido hasta ese momento; pero los sistemas de visualización de documentos, para funcionar, requieren tablas de tipografía, que asocian un glifo (dibujo) a cada carácter que abarcan, y sucede que hay muchísimas tablas de tipografía, con nombres como Arial o Times, que dibujan una misma letra con base en matrices diferentes y en diferentes estilos («A» o «A»); sin embargo, la gran mayoría de las fuentes tipográficas contienen solo un pequeño subconjunto de todos los caracteres Unicode.

Normas comunes de codificación de caracteres

[editar]

Codificación de caracteres del español

[editar]
Minúsculas
carácter ISO-8859-1 UTF-8 UTF-16
a 0x61 0x61 0x00 0x61
b 0x62 0x62 0x00 0x62
c 0x63 0x63 0x00 0x63
d 0x64 0x64 0x00 0x64
e 0x65 0x65 0x00 0x65
f 0x66 0x66 0x00 0x66
g 0x67 0x67 0x00 0x67
h 0x68 0x68 0x00 0x68
i 0x69 0x69 0x00 0x69
j 0x6a 0x6a 0x00 0x6a
k 0x6b 0x6b 0x00 0x6b
l 0x6c 0x6c 0x00 0x6c
m 0x6d 0x6d 0x00 0x6d
n 0x6e 0x6e 0x00 0x6e
o 0x6f 0x6f 0x00 0x6f
p 0x70 0x70 0x00 0x70
q 0x71 0x71 0x00 0x71
r 0x72 0x72 0x00 0x72
s 0x73 0x73 0x00 0x73
t 0x74 0x74 0x00 0x74
u 0x75 0x75 0x00 0x75
v 0x76 0x76 0x00 0x76
w 0x77 0x77 0x00 0x77
x 0x78 0x78 0x00 0x78
y 0x79 0x79 0x00 0x79
z 0x7a 0x7a 0x00 0x7a
Mayúsculas
carácter ISO-8859-1 UTF-8 UTF-16
A 0x41 0x41 0x00 0x41
B 0x42 0x42 0x00 0x42
C 0x43 0x43 0x00 0x43
D 0x44 0x44 0x00 0x44
E 0x45 0x45 0x00 0x45
F 0x46 0x46 0x00 0x46
G 0x47 0x47 0x00 0x47
H 0x48 0x48 0x00 0x48
I 0x49 0x49 0x00 0x49
J 0x4a 0x4a 0x00 0x4a
K 0x4b 0x4b 0x00 0x4b
L 0x4c 0x4c 0x00 0x4c
M 0x4d 0x4d 0x00 0x4d
N 0x4e 0x4e 0x00 0x4e
O 0x4f 0x4f 0x00 0x4f
P 0x50 0x50 0x00 0x50
Q 0x51 0x51 0x00 0x51
R 0x52 0x52 0x00 0x52
S 0x53 0x53 0x00 0x53
T 0x54 0x54 0x00 0x54
U 0x55 0x55 0x00 0x55
V 0x56 0x56 0x00 0x56
W 0x57 0x57 0x00 0x57
X 0x58 0x58 0x00 0x58
Y 0x59 0x59 0x00 0x59
Z 0x5a 0x5a 0x00 0x5a
Acentos y tildes
carácter ISO-8859-1 UTF-8 UTF-16
á 0xe1 0xc3 0xa1 0x00 0xe1
Á 0xc1 0xc3 0x81 0x00 0xc1
é 0xe9 0xc3 0xa9 0x00 0xe9
É 0xc9 0xc3 0x89 0x00 0xc9
í 0xed 0xc3 0xad 0x00 0xed
Í 0xcd 0xc3 0x8d 0x00 0xcd
ó 0xf3 0xc3 0xb3 0x00 0xf3
Ó 0xd3 0xc3 0x93 0x00 0xd3
ú 0xfa 0xc3 0xba 0x00 0xfa
Ú 0xda 0xc3 0x9a 0x00 0xda
ü 0xfc 0xc3 0xbc 0x00 0xfc
Ü 0xdc 0xc3 0x9c 0x00 0xdc
ñ 0xf1 0xc3 0xb1 0x00 0xf1
Ñ 0xd1 0xc3 0x91 0x00 0xd1
Símbolos
carácter ISO-8859-1 UTF-8 UTF-16
¿ 0xbf 0xc2 0xbf 0x00 0xbf
? 0x3f 0x3f 0x00 0x3f
¡ 0xa1 0xc2 0xa1 0x00 0xa1
! 0x21 0x21 0x00 0x21