Páginas

viernes, 24 de septiembre de 2021

Qué quiere decir Charset=”UTF-8”

Casi todas las páginas html que circulan por la red incluyen un atributo que dice:

Charset=”UTF-8”

esto sirve para indicar al browser como tiene que traducir la cadena de ceros y unos que recibe y convertirlos en caracteres legibles: letras, números o símbolos especiales.
Para entender lo que es UTF-8 (UTF es Unicode Transformation Format) hay hablar primero de Unicode. Unicode es un estándar ampliamente aceptado, mediante el cual a cada carácter se le asigna un número lo identifica. Por ejemplo, el carácter A mayúscula se identifica con el número hexadecimal 41 o lo que es lo mismo con el número decimal 65. Con Unicode tenemos identificados los caracteres de forma unívoca, es decir si en un ordenador está almacenado un 65 (de determinada manera) este representa a una A mayúscula.
Los números en el ordenador de almacenan en base binaria, ya que solo manejan ceros y unos. Entonces lo primero que tenemos que hacer con el 65 que representa al carácter A mayúscula es convertirlo en un número binario. Para convertir de decimal a binario existe un algoritmo que consiste en ir dividiendo el número por 2 hasta que el cociente de la división es 1. Para explicarlo con un ejemplo breve veamos cómo se traduce un número 4 decimal a binario.

Una vez hechas las divisiones se toman el cociente de la última y todos los restos de las anteriores en orden inverso a como se han obtenido. En este caso el resultado es que un 4 decimal se convierte en un 100 binario. De la misma manera 65 se convierte en 1000001.
Una vez que sabemos cómo obtener el binario de un número llega el algoritmo UTF-8 para determinar cómo almacenar este binario en los bytes de la memoria del ordenador. Un byte es la unidad de memoria que el ordenador maneja y se compone de 8 bits, también se le llama octeto. UTF-8 almacena cada carácter en 1, 2, 3 o 4 bytes. Hay que tener en cuenta que Unicode asigna identificadores para todos los caracteres existentes en cualquier idioma y esto conlleva a que con sólo 8 bits no sea suficiente para representar todos estos caracteres.
Por ejemplo, si se trata de codificar una A que en binario se representa por 7 ceros y unos, esta se almacena en un byte añadiendo un cero para completar el byte, o sea 01000001. Pero hay caracteres como ① que se traducen en más de 7 ceros y unos. Este carácter tiene asignado el decimal 9312 que se convierte en el binario 10010001100000. Este número binario no se puede almacenar en 7 bits, ya que cada bit contiene o un cero o un uno y necesita entonces 14 bits. Por lo tanto como la unidad de información que maneja el ordenador es el byte, este carácter necesita al menos 2 bytes para ser almacenada. No obstante según el algoritmo de codificación UTF-8, este carácter se almacena en 3 bytes. El motivo es que UTF-8 sigue la siguiente convención:

Ceros y unos del binario Código binario del número Codificación UTF-8
Hasta 7 xxxxxxx 0xxxxxxx
Hasta 10 yyyyyxxxxxx 110yyyyy 10xxxxxx
Hasta 14 zzzzyyyyyyxxxxxx 1110zzzz 10yyyyyy 10xxxxxx
Hasta 19 uuuwwzzzzyyyyyyxxxxxx 11110uuu 10wwzzzz 10yyyyyy 10xxxxxx

Llegar a comprender a fondo estos asuntos, es la base para entender otras cosas que se construyen sobre ellos.

No hay comentarios:

Publicar un comentario