Los códigos ASCII y Unicode en Windows y Linux

ASCII es el acrónimo inglés de American Standard Code for Information Interchange (Código Estándar Estadounidense para el Intercambio de Información). Es un código de caracteres basado en el alfabeto latino, creado en 1963 por el Instituto Estadounidense de Estándares Nacionales ANSI como una evolución de los conjuntos de códigos utilizados entonces en telegrafía.

El código ASCII utiliza 7 bits, de modo que permite representar 27 = 128 caracteres diferentes. Aunque inicialmente se empleaba un bit adicional como bit de paridad para detectar errores en la transmisión.

En la actualidad define:

  • 32 códigos de control para caracteres no imprimibles, con códigos de control pensados originalmente para controlar diversos dispositivos como impresoras
  • 95 caracteres imprimibles que les siguen en la numeración

Los caracteres de control ASCII

Los caracteres de control ASCII
Binario Decimal Hexadecimal Nombre Significado
0000 0000 0 00 NUL Carácter nulo
0000 0001 1 01 SOH Inicio de encabezado
0000 0010 2 02 STX Inicio de texto
0000 0011 3 03 ETX Fin de texto
0000 0100 4 04 EOT Fin de transmisión
0000 0101 5 05 ENQ Consulta
0000 0110 6 06 ACK Acuse de recibo
0000 0111 7 07 BEL Timbre
0000 1000 8 08 BS Retroceso
0000 1001 9 09 HT Tabulación horizontal
0000 1010 10 0A LF Salto de línea
0000 1011 11 0B VT Tabulación vertical
0000 1100 12 0C FF De avance
0000 1101 13 0D CR Retorno de carro
0000 1110 14 0E SO Mayúsculas fuera
0000 1111 15 0F SI Mayúsculas
0001 0000 16 10 DLE Escape enlace de datos
0001 0001 17 11 DC1 Control dispositivo 1
0001 0010 18 12 DC2 Control dispositivo 2
0001 0011 19 13 DC3 Control dispositivo 3
0001 0100 20 14 DC4 Control dispositivo 4
0001 0101 21 15 NAK Confirmación negativa
0001 0110 22 16 SYN Síncrono en espera
0001 0111 23 17 ETB Fin de transmisión de bloque
0001 1000 24 18 CAN Cancelar
0001 1001 25 19 EM Fin del medio
0001 1010 26 1A SUB Substitución
0001 1011 27 1B ESC Escape
0001 1100 28 1C FS Separador de fichero
0001 1101 29 1D GS Separador de grupos
0001 1110 30 1E RS Separador de registros
0001 1111 31 1F US Separador de unidades
0111 1111 127 7F DEL Suprimir

Los caracteres imprimibles ASCII

Los caracteres imprimibles ASCII 
Bin Dec Hex Carácter Bin Dec Hex Carácter Bin Dec Hex Carácter
0010 0000 32 20 Espacio 0100 0000 64 40 @ 0110 0000 96 60 `
0010 0001 33 21 ! 0100 0001 65 41 A 0110 0001  97 61 a
0010 0010  34 22 0100 0010 66 42 B 0110 0010  98 62 b
0010 0011  35 23 # 0100 0011  67 43 C 0110 0011  99 63 c
0010 0100  36 24 $ 0100 0100  68 44 D 0110 0100  100 64 d
0010 0101  37 25 % 0100 0101  69 45 E 0110 0101  101 65 e
0010 0110  38 26 & 0100 0110  70 46 F 0110 0110  102 66 f
0010 0111  39 27 0100 0111  71 47 G 0110 0111  103 67 g
0010 1000  40 28 ( 0100 1000  72 48 H 0110 1000  104 68 h
0010 1001 41 29 ) 0100 1001  73 49 I 0110 1001  105 69 i
0010 1010  42 2A * 0100 1010  74 4A J 0110 1010  106 6A j
0010 1011  43 2B + 0100 1011  75 4B K 0110 1011 107 6B k
0010 1100 44 2C , 0100 1100  76 4C L 0110 1100  108 6C l
0010 1101  45 2D - 0100 1101  77 4D M 0110 1101  109 6D m
0010 1110  46 2E . 0100 1110  78 4E N 0110 1110  110 6E n
0010 1111  47 2F / 0100 1111  79 4F O 0110 1111  111 6F o
0011 0000  48 30 0 0101 0000  80 50 P 0111 0000  112 70 p
0011 0001  49 31 1 0101 0001  81 51 Q 0111 0001  113 71 q
0011 0010  50 32 2 0101 0010  82 52 R 0111 0010  114 72 r
0011 0011  51 33 3 0101 0011  83 53 S 0111 0011  115 73 s
0011 0100  52 34 4 0101 0100  84 54 T 0111 0100  116 74 t
0011 0101  53 35 5 0101 0101  85 55 U 0111 0101 117 75 u
0011 0110  54 36 6 0101 0110  86 56 V 0111 0110  118 76 v
0011 0111  55 37 7 0101 0111  87 57 W 0111 0111  119 77 w
0011 1000  56 38 8 0101 1000  88 58 X 0111 1000  120 78 x
0011 1001  57 39 9 0101 1001  89 59 Y 0111 1001  121 79 y
0011 1010  58 3A : 0101 1010  90 5A Z 0111 1010  122 7A z
0011 1011  59 3B ; 0101 1011  91 5B [ 0111 1011  123 7B {
0011 1100  60 3C < 0101 1100  92 5C \ 0111 1100  124 7C |
0011 1101  61 3D = 0101 1101  93 5D ] 0111 1101  125 7D }
0011 1110  62 3E > 0101 1110  94 5E ^ 0111 1110  126 7E ~
0011 1111  63 3F ? 0101 1111  95 5F

Caracteres ASCII extendidos

Se han desarrollado muchas variaciones del código ASCII para facilitar la escritura en lenguas diferentes al inglés y para cubrir otros tipos de símbolos ya sean técnicos o idiomáticos. Así, surgieron otros códigos, compatibles con ASCII pero de 8 bits (28 = 256 caracteres), especialmente creados para representar símbolos de otras lenguas además del inglés. El ISO 8859-1, por ejemplo, posee caracteres apropiados para el español, portugués, francés y otras lenguas latinas.

Se pueden encontrar gran cantidad de dichas variaciones denominadas como “ASCII Extendido“. Aunque en ocasiones el término “ASCII Extendido” se aplica erróneamente para designar a todas las variantes del código ASCII, incluso las que no preservan el conjunto de códigos de caracteres original ASCII de siete bits.

Páginas de código

También se utiliza habitualmente el término “ASCII Extendido” para hacer referencia a la página de código 437 utilizada en los ordenadores con MS-DOS y MS Windows. En dicha página de código se utilizan los códigos del 0 al 127 de ASCII y desde el código 127 hasta el 255 se utilizan para los caracteres de texto internacionales y para diversos símbolos para las pantallas e impresoras.

La página de código 850 es una modificación de la 437 en la que se cambiaron los símbolos de algunos de los caracteres extendidos por caracteres requeridos por idiomas como el español.

Los códigos ALT

Un legado de las página de códigos 437 son las combinaciones de códigos con la tecla ALT para escribir símbolos, que se introdujeron en la primera versión de MS-DOS. De modo que es posible insertar caracteres de la página de códigos utilizada en el equipo insertando los dígitos del código en el teclado numérico mientras se mantiene presionada la tecla ALT.

Por ejemplo, puedes escribir:

  • ⌀ el símbolo de diámetro como ALT 155
  • ∅ el símbolo de conjunto vacío como ALT 157
Aunque mucha gente utiliza el símbolo de conjunto vacío ∅ para representar los diámetros, en realidad el símbolo adecuado es ⌀.

Las páginas de códigos dependen de la versión del sistema operativo y de la zona geográfica definida, las usadas en Windows 7 para nuestra zona son la CP437 y la CP850.

  • La página de código activa puede conocerse introduciendo en la consola de comandos: mode con cp
  • Se puede cambiar la página de código escribiendo en la consola de comandos: mode con cp select=xxx (siendo xxx el número de la página de código a activar, por ejemplo 850 o 427)

En este sistema de codificación se emplea ISO-8859-1 pero los caracteres de control del 1 al 31 se utilizan para mostrar símbolos gráficos, por ejemplo notas musicales, caritas, símbolos de cartas, etc.

Se respeta el intervalo ASCII del 33 al 126, pero desde el 128 hasta el 255 no se corresponde con el estándar ISO-8859-1, ya que se trata de incluir todos los caracteres  necesarios para el usuario de nuestra zona geográfica.

En este artículo puedes ver un listado de los códigos de la página de código 850.

Los códigos ALT + 0

Las páginas de códigos anteriores fueron reemplazadas en los sistemas con Windows por la 1252 también conocida como Windows-1252 y que está basada en el estándar ISO 8859-1.

Por compatibilidad con el sistema previo, se mantuvo la opción de escribir los símbolos de las páginas de código 437 y 850 tal como se indica en el apartado anterior. Mientras que para utilizar los códigos correspondientes a Windows-1252 se optó por anteponer un cero al código del símbolo. En los símbolos de los ejemplos anteriores, podemos escribir:

  • ⌀ el símbolo de diámetro como ALT 0248
  • ∅ el símbolo de conjunto vacío como ALT 0216

En este artículo puedes ver un listado de los códigos de la página de código Windows-1252.

Unicode

Unicode es un estándar de codificación diseñado para facilitar el tratamiento informático, la transmisión y la visualización de textos de múltiples lenguajes y disciplinas técnicas. El término Unicode proviene de los tres objetivos perseguidos: universalidad, uniformidad y unicidad.

En el sistema de codificación Unicode se especifica un nombre e identificador numérico único para cada carácter o símbolo, el code point o punto de código, además de otras informaciones necesarias para su uso correcto. La versión 5.1 contenía 100.713 caracteres.

Este estándar ha sido implementado en un número considerable de tecnologías recientes, que incluyen XML, Java y sistemas operativos modernos como Windows y Linux. La descripción completa del estándar y las tablas de caracteres están disponibles en la página web oficial de Unicode. Donde se puede consultar gratuitamente la última versión 6.2.

Formas de codificación

Los puntos de código de Unicode se identifican por un número entero. Según su arquitectura, un ordenador utilizará unidades de 8, 16 o 32 bits para representar dichos enteros. Unicode define tres formas de codificación bajo el nombre UTF o Formato de Transformación Unicode (Unicode Transformation Format):

  • UTF-8 — codificación orientada a byte con símbolos de longitud variable.
  • UTF-16 — codificación de 16 bits de longitud variable optimizada para la representación del plano básico multilingüe (BMP).
  • UTF-32 — codificación de 32 bits de longitud fija, y la más sencilla de las tres.

Códigos Unicode en Windows

Cuando Windows implementó el sistema de codificación Unicode se decidió mantener los dos métodos de entrada de caracteres (ALT y ALT0) indicados en los apartados anteriores. De modo que se precisaba un tercer sistema de entrada de caracteres para utilizar con el sistema Unicode.

Sin embargo para utilizar este tercer método los usuarios de Windows deben crear una nueva clave en el registro de Windows del siguiente modo:

  1. Acceder al registro de Windows
    • pulsar sobre el icono de Inicio
    • escribir “regedit” y pulsar Intro
  2. Acceder a la carpeta HKEY_CURRENT_USER\Control Panel\Input Method
  3. Crear una nueva clave denominada “EnableHexNumpad” de tipo “Valor de cadena” (o REG_SZ)
    1. Pulsar con el botón derecho del ratón en una zona vacía
    2. Seleccionar “Nuevo –> Valor de Cadena”
    3. Indicarle el nombre “EnableHexNumpad”
  4. Asignarle el valor “1″
    1. Doble clic sobre la clave que hemos creado
    2. En el campo “Información del valor” escribir “1″
  5. Reiniciar el equipo
Ahora ya funcionará el método para escribir caracteres utilizando el sistema Unicode.

Para insertar un carácter a partir de su código Unicode en Windows se presionará la tecla ALT y sin soltarla, la tecla + del teclado numérico y el código Unicode en formato hexadecimal del carácter deseado.

Por ejemplo:

  • ⌀ el símbolo de diámetro como ALT + 00f8
  • ∅ el símbolo de conjunto vacío como ALT + 00d8
En este artículo puedes ver un listado de los códigos Unicode más utilizados, y también puedes consultar todos los códigos en la web de Unicode.

Códigos Unicode en Linux

Para insertar un carácter a partir de su código unicode en linux se presionarán las teclas CTRL + SHIFT + U y a continuación se escribirá el código Unicode en formato hexadecimal del carácter deseado.

Puedes consultar los códigos de los caracteres más utilizados en el artículo listado de los códigos Unicode.

Leave a Reply