Codificación de caracteres
# Codificación de caracteres

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

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 locales. Hasta ahora, el UNICODE manda.

## 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 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

* ISO 646
   * ASCII
* EBCDIC
   * CP930
* ISO 8859:
   * ISO 8859-1 Europa occidental
   * ISO 8859-2 Europa occidental y Centroeuropa (checo, polaco, croata, rumano, esloveno, …)
   * ISO 8859-3 Europa occidental y Europa del Sur
   * ISO 8859-4 Europa occidental y países bálticos (lituano, estonio y lapón)
   * ISO 8859-5 alfabeto cirílico
   * ISO 8859-6 árabe
   * ISO 8859-7 griego
   * ISO 8859-8 Hebreo
   * ISO 8859-9 Europa occidental con el juego de caracteres turco
   * ISO 8859-10 Europa occidental con juegos de caracteres nórdicos, incluyendo el de Islandia.
   * ISO 8859-11 tailandés
   * ISO 8859-13 idiomas bálticos y polaco
   * ISO 8859-14 idiomas celtas (gaélico irlandés, escocés, galés)
   * ISO 8859-15 Añade el símbolo de Euro y otros a ISO 8859-1
   * ISO 8859-16 idiomas centroeuropeos (polaco, checo, esloveno, eslovaco, húngaro, albano, rumano, alemán e italiano)
* CP437, CP737, CP850, CP852, CP855, CP857, CP858, CP860, CP861, CP863, CP865, CP866, CP869
* Juegos de caracteres de Windows:
   * Windows-1250 para idiomas centroeuropeos que utilizan un guion latino (polaco, checo, eslovaco, húngaro, esloveno, serbio, croata, rumano y albano)
   * Windows-1251 para alfabetos cirílicos
   * Windows-1252 para idiomas occidentales
   * Windows-1253 para griego
   * Windows-1254 para turco
   * Windows-1255 para hebreo
   * Windows-1256 para árabe
   * Windows-1257 para idiomas bálticos
   * Windows-1258 para vietnamita
* Mac OS Roman
* KOI8-R, KOI8-U, KOI7
* MIK
* Cork o T1
* ISCII
* VISCII
* Big5
   * HKSCS
* Guobiao
   * GB2312
   * GBK (Página de códigos 936 de Microsoft)
   * GB18030
* Shift JIS para Japonés (Página de códigos 932 de Microsoft)
* EUC-KR para Coreano (Página de códigos 932 de Microsoft)
* ISO-2022 y EUC para juegos de caracteres CJK
* 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

## Codificación de caracteres del español

Minúsculas :

| carácter | ISO-8859-1 | UTF-8 | UTF-8 | UTF-16 | UTF-16 |
| - | - | - | - | - | - |
| a | 0x61 | 0x61 | 0x61 | 0x00 | 0x61 |
| b | 0x62 | 0x62 | 0x62 | 0x00 | 0x62 |
| c | 0x63 | 0x63 | 0x63 | 0x00 | 0x63 |
| d | 0x64 | 0x64 | 0x64 | 0x00 | 0x64 |
| e | 0x65 | 0x65 | 0x65 | 0x00 | 0x65 |
| f | 0x66 | 0x66 | 0x66 | 0x00 | 0x66 |
| g | 0x67 | 0x67 | 0x67 | 0x00 | 0x67 |
| h | 0x68 | 0x68 | 0x68 | 0x00 | 0x68 |
| i | 0x69 | 0x69 | 0x69 | 0x00 | 0x69 |
| j | 0x6a | 0x6a | 0x6a | 0x00 | 0x6a |
| k | 0x6b | 0x6b | 0x6b | 0x00 | 0x6b |
| l | 0x6c | 0x6c | 0x6c | 0x00 | 0x6c |
| m | 0x6d | 0x6d | 0x6d | 0x00 | 0x6d |
| n | 0x6e | 0x6e | 0x6e | 0x00 | 0x6e |
| o | 0x6f | 0x6f | 0x6f | 0x00 | 0x6f |
| p | 0x70 | 0x70 | 0x70 | 0x00 | 0x70 |
| q | 0x71 | 0x71 | 0x71 | 0x00 | 0x71 |
| r | 0x72 | 0x72 | 0x72 | 0x00 | 0x72 |
| s | 0x73 | 0x73 | 0x73 | 0x00 | 0x73 |
| t | 0x74 | 0x74 | 0x74 | 0x00 | 0x74 |
| u | 0x75 | 0x75 | 0x75 | 0x00 | 0x75 |
| v | 0x76 | 0x76 | 0x76 | 0x00 | 0x76 |
| w | 0x77 | 0x77 | 0x77 | 0x00 | 0x77 |
| x | 0x78 | 0x78 | 0x78 | 0x00 | 0x78 |
| y | 0x79 | 0x79 | 0x79 | 0x00 | 0x79 |
| z | 0x7a | 0x7a | 0x7a | 0x00 | 0x7a |

Mayúsculas :

| carácter | ISO-8859-1 | UTF-8 | UTF-8 | UTF-16 | UTF-16 |
| - | - | - | - | - | - |
| A | 0x41 | 0x41 | 0x41 | 0x00 | 0x41 |
| B | 0x42 | 0x42 | 0x42 | 0x00 | 0x42 |
| C | 0x43 | 0x43 | 0x43 | 0x00 | 0x43 |
| D | 0x44 | 0x44 | 0x44 | 0x00 | 0x44 |
| E | 0x45 | 0x45 | 0x45 | 0x00 | 0x45 |
| F | 0x46 | 0x46 | 0x46 | 0x00 | 0x46 |
| G | 0x47 | 0x47 | 0x47 | 0x00 | 0x47 |
| H | 0x48 | 0x48 | 0x48 | 0x00 | 0x48 |
| I | 0x49 | 0x49 | 0x49 | 0x00 | 0x49 |
| J | 0x4a | 0x4a | 0x4a | 0x00 | 0x4a |
| K | 0x4b | 0x4b | 0x4b | 0x00 | 0x4b |
| L | 0x4c | 0x4c | 0x4c | 0x00 | 0x4c |
| M | 0x4d | 0x4d | 0x4d | 0x00 | 0x4d |
| N | 0x4e | 0x4e | 0x4e | 0x00 | 0x4e |
| O | 0x4f | 0x4f | 0x4f | 0x00 | 0x4f |
| P | 0x50 | 0x50 | 0x50 | 0x00 | 0x50 |
| Q | 0x51 | 0x51 | 0x51 | 0x00 | 0x51 |
| R | 0x52 | 0x52 | 0x52 | 0x00 | 0x52 |
| S | 0x53 | 0x53 | 0x53 | 0x00 | 0x53 |
| T | 0x54 | 0x54 | 0x54 | 0x00 | 0x54 |
| U | 0x55 | 0x55 | 0x55 | 0x00 | 0x55 |
| V | 0x56 | 0x56 | 0x56 | 0x00 | 0x56 |
| W | 0x57 | 0x57 | 0x57 | 0x00 | 0x57 |
| X | 0x58 | 0x58 | 0x58 | 0x00 | 0x58 |
| Y | 0x59 | 0x59 | 0x59 | 0x00 | 0x59 |
| Z | 0x5a | 0x5a | 0x5a | 0x00 | 0x5a |

Acentos y tildes :

| carácter | ISO-8859-1 | UTF-8 | UTF-8 | UTF-16 | 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-8 | UTF-16 | UTF-16 |
| - | - | - | - | - | - |
| ¿ | 0xbf | 0xc2 | 0xbf | 0x00 | 0xbf |
| ? | 0x3f | 0x3f | 0x3f | 0x00 | 0x3f |
| ¡ | 0xa1 | 0xc2 | 0xa1 | 0x00 | 0xa1 |
| ! | 0x21 | 0x21 | 0x21 | 0x00 | 0x21 |

* Datos: Q184759
* Multimedia: Character sets / Q184759
