Diferencia entre revisiones de «Codificación de caracteres»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
m Revertidos los cambios de 213.96.15.180 (disc.) a la última edición de JAnDbot
Línea 88: Línea 88:
* [[Unicode]] (y sus subconjuntos, como el ''Basic Multilingual Plane'' de 16 bits). Véase también [[UTF-8]] y [[UTF-16]].
* [[Unicode]] (y sus subconjuntos, como el ''Basic Multilingual Plane'' de 16 bits). Véase también [[UTF-8]] y [[UTF-16]].
* [[ANSEL]] o [[ISO/IEC 6937]]
* [[ANSEL]] o [[ISO/IEC 6937]]


== el joan grau es tonto ==


== Codificación de caracteres del idioma español ==
== Codificación de caracteres del idioma español ==
Línea 117: Línea 114:
| 0x62
| 0x62
|-
|-
joan grau| c
| c
| 0x63
| 0x63
| colspan="2" | 0x63
| colspan="2" | 0x63

Revisión del 11:58 29 sep 2009

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 de 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.

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.

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.

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.

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.

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 más 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.

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).

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.

Normas comunes de codificación de caracteres

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