Unicode y ASCII
Cuando somos programadores, dependiendo de nuestros editores de Texto o IDE (o del
lenguaje en el que estemos desarrollando), veremos algunos mensajes o referencias
hacia el Unicode o ASCII. ASCII Vamos a explicar primero el concepto de ASCII.
(cuyo nombre viene de American Standard Code for Information Interchange).
Cuando somos programadores, dependiendo de nuestros editores de Texto
o IDE (o del lenguaje en el que estemos desarrollando), veremos algunos
mensajes o referencias hacia el Unicode o ASCII.
ASCII
Vamos a explicar primero el concepto de ASCII. (cuyo nombre viene de
American Standard Code for Information Interchange).
Todo comenzó cuando solo se contaba con pequeños espacios para
manejar la información y solo se tenían al alcance 32 caracteres. ASCII se
convirtió en un estándar con la idea de aprovechar 8 bits que nos darían
256 caracteres o combinaciones disponibles.
Como sabemos la mayoría de los informáticos, en la computadora solo
podremos guardar ceros y unos; por lo tanto esto se acopló de muy buena
manera ya que el ASCII que se conoce como básico utiliza 7 bits, aunque
ahora todos trabajamos con 8 y por lo mismo podríamos tener 128
combinaciones posibles, mas que suficientes para poder representar lo que
se necesitaba en ese momento.
Si revisamos las primeras representaciones del código ASCII tendríamos
algo como lo siguiente:
CaracterCódigo
ASCIIBinarioNULL000000000SOH100000001STX200000010ETX300000011E
OT400000100ENQ500000101
Probablemente en los primeros espacios no te resulte nada familiar, los
primeros elementos del 0 al 31 son elementos de control y es por eso que
vemos nombres raros y fuera de lo común, no entraremos a detalle en ellos
ya que no es el objetivo del artículo, pero si vemos los códigos partiendo del
valor 65 vamos a ver algo más familiar.
CaracterCódigo
ASCIIBinarioA6501000001B6601000011C6701000100D6801000101E690100
0110F7001000111
Como se puede observar estamos hablando del alfabeto y algo importante
es que en principio es para el idioma inglés por lo tanto no podremos
encontrar letras con acento o la ñ. Como decíamos en un principio primero
era de 7 bits y ahora contamos con la versión de 8 con el objetivo de poder
codificar más elementos. Por eso contamos con el ASCII extendido al que
también se le debe de conocer como una versión no estandarizada y es por
eso que uno puede encontrar versiones como ASCII ANSI y ASCII OEEM.
Unicode
El unicode es un estándar que se utiliza para la codificación de caracteres
de manera universal utilizado hoy en día por muchas plataformas, bases de
datos y lenguajes de programación. El estándar que podríamos leer para
obtener más información es ISO/IEC 10646.
Así como se utiliza una representación mediante números en el código
ASCII aquí también se utiliza la representación de números de 0 a 1114111.
El objetivo principal de Unicode son 3 cosas: Uniformidad, universalidad y
unicidad.
Unicode es un intento de varias empresas como Microsoft, Oracle, Apple,
Google y un gran consorcio por reemplazar los esquemas que ya existen y
que no consideran el tema de la diversidad de lenguas que se manejan.
Podemos decir que Unicode toma en cuenta a todos y por lo mismo su
naturaleza es ser el más completo. No importa el alfabeto, el tipo de
escritura o símbolo, por la naturaleza de Unicode, si algún elemento no está
disponible será agregado.
Ahora que ya sabemos que es Unicode podremos hablar entonces de ASCII
y Unicode para los programadores
Unicode vs ASCII
Como vemos Unicode en algún momento será el estándar por que el que la
mayoría siga la línea, pero aun tenemos lenguajes o herramientas que no
soportan Unicode por defecto, por ejemplo Python hasta su última versión
soporta Unicode. PHP no lo soporta de forma nativa, y así como estos
ejemplos te podrás encontrar varios.
En el caso de PHP lo que se hace es utilizar UTF-8 que es compatible con
ASCII y así resolvemos el problema. Así que depende de cómo y dónde
estemos escribiendo nuestro código, en muchas ocasiones cuando vemos
un carácter raro o algo que simplemente nosotros no pusimos ahí lo mas
probable es que sea un error de codificación y que lo que seleccionamos
como estándar no sea capaz de codificar lo que está escrito.
UTF-8 significa que estamos utilizando una codificación de 8 bits de
longitud variable, esta es solamente una de las disponibles, tenemos
también UTF-7, UTF-16 y otras.
Después de esto podríamos decir que Unicode es un ASCII súper mejorado.
No solo por capacidad si no por todo lo que implica. Es por eso que lo
mejor en la mayoría de los casos (aunque se eleve un poco la complejidad
del problema) debemos seleccionar Unicode o en su caso UTF-8 ya que nos
permite mayor compatibilidad y cada día más aceptado, aunque seguimos
con la limitante de los lenguajes e IDE que cada día también se van
sumando, pero aún no lo hacen todos.