Codificación de caracteres
De Wikipedia, la enciclopedia libre
Este artículo o sección sobre informática necesita ser wikificado con un formato adecuado a las convenciones de estilo de Wikipedia. Por favor, edítalo para cumplir con ellas. No elimines este aviso hasta que lo hayas hecho. ¡Colabora wikificando! |
La codificación de caracteres es el método que permite convertir un carácter de un lenguaje natural (alfabeto o silabario) en un símbolo en otro sistema de representación, como un número o una secuencia de pulsos eléctricos en un sistema electrónico, aplicando normas o reglas de codificación.
Tabla de contenidos |
[editar] Normas 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.
[editar] ASCII
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.
[editar] ASCII Extendido
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.
[editar] Unicode
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 especiales.
[editar] UTF-8
Es una norma de transmisión utilizada junto con la norma de codificación Unicode. Utilizadas en conjunto, funcionan de la siguiente manera:
- Unicode asigna los enteros del 0 al 127 (un total de 128) a exactamente los mismos caracteres que ASCII
- UTF-8 empaqueta cualquier entero del 0 al 127 en un octeto "a la antigua" pero con el octavo dígito siempre en cero, ya que actualmente el bit de paridad no se utiliza mas para detección de errores
- Además, como la tabla de Unicode es tan grande, la mayoría de sus símbolos están asignados a enteros mayores que 127 (códigos que, en consecuencia, necesitan más que 7 dígitos para su representación binaria). En todos esos casos, UTF-8 envía el comienzo de la representación binaria del código en cuestión en un primer octeto con dígito de paridad = 1
- El receptor de este mensaje, interpreta este dígito en 1 como señal de que lo que está siendo transmitido es un código que no cabe en 7 dígitos binarios; y por tanto determina que el símbolo no lo va a conocer mientras no lea el siguiente octeto, y tal vez el que sigue. En el peor de los casos, quizás se haga necesario leer seis octetos consecutivos para determinar un código alto.
[editar] Normas de Transmisión
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).
[editar] Tablas tipográficas
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 poder 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 a base de matrices diferentes y en diferentes estilos ("A" o "A"); sin embargo, la gran mayoría de las fuentes tipográficas contienen sólo un pequeño subconjunto de todos los caracteres Unicode. Por este motivo, para leer páginas con caracteres asiáticos, por ejemplo, no basta que el visualizador usado "acepte" la codificación Unicode, sino que, además, el computador debe tener instalada una tabla tipográfica suficientemente extensa.
[editar] Normas comunes de codificación de caracteres
- ASCII
- EBCDIC
- ISO 8859:
- ISO 8859-1, ISO 8859-2, ISO 8859-3, ISO 8859-4, ISO 8859-5, ISO 8859-6, ISO 8859-7, ISO 8859-8, ISO 8859-9, ISO 8859-10, ISO 8859-11, ISO 8859-13, ISO 8859-14, ISO 8859-15, ISO 8859-16
- Conjuntos de caracteres de Windows:
- Windows-1251, Windows-1252, Windows-1258
- KOI8-R, KOI8-U
- ISCII
- VISCII
- Big-5
- GB:
- GB2312
- GB18030
- ISO 2022
- Unicode (y sus subconjuntos, como el Basic Multilingual Plane de 16 bits). Véase también UTF-8 y UTF-16.
[editar] Codificación de caracteres del idioma español
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 |