Codificación electrónica

La codificación es una forma de estandarización que utiliza la representación de caracteres para transformar información de un idioma, lenguaje o representación hacia otro.

La codificación en si misma no es una forma de cifrar (proteger la información con una capa de seguridad indescifrable para un tercero), si no que es una puesta en mutuo acuerdo entre varias partes para que una información ininteligible en un formato lo sea en otro (humano generalmente).

Por los tiempos que corren en el momento de crear este artículo, se hablará principalmente de la codificación informática.

Código morse

Como ejemplo de codificación tenemos el código morse, el cual es un sistema de codificación para pasar entre puntos y líneas a alfabeto humano (sea cual sea el idioma);

Código morse estándar

El código morse estándar sigue el alfabeto latino y se encuentra estandarizado internacionalmente.

  • Estándar internacional

El estándar internacional del morse lo define el “International Amateur Radio Union” (IARU)

Alfabeto latinoCódigo MorseNúmerosCódigo MorsePuntuaciónCódigo Morse
A.-0—–..-.-.-
B-…1.––,–..–
C-.-.2..—?..–..
D-..3…–.––.
E.4….-!-.-.–
F..-.5…../-..-.
G–.6-….(-.–.
H….7–…)-.–.-
I..8—..&.-…
J.—9––.:—…
K-.-;-.-.-.
L.-..=-…-
M+.-.-.
N-.--….-
O_..–.-
P.–..-..-.
Q–.-$…-..-
R.-.@.–.-.
S¿..-.-
T-¡–…-
U..-
V…-
W.–
X-..-
Y-.–
Z–..
Á.–.-
É..-..
Ñ–.–
Ó—.
Código morse no latino

El código morse no solamente se puede basar en el alfabeto latino, distintas culturas que no usan tal alfabeto tenian su propia codificación en tal sistema.

Ejemplo de esto sería el código morse para el alfabeto cirílico (idiioma ruso).

Alfabeto cirílicoCódigo MorseAlfabeto cirílicoCódigo Morse
А.-Т-
Б-…У..-
В.–Ф..-.
Г–.Х….
Д-..Ц-.-.
Е.Ч—.
Ж…-Ш––
З–..Щ–.-
И..Ъ–.–
Й.—Ы-.–
К-.-Ь-..-
Л.-..Э..-..
МЮ..–
Н-.Я.-.-
ОЇ.–.
П.–.Є..-..
Р.-.І..
СҐ–.

O el alifato (del idioma árabe, persa, urdu, entre otros)

AlifatoCódigo Morse
ب.-
ت-…
ث-
ج.—
ح….
خ
د-..
ذ–..
ر.-.
ز—.
س
ش––
ص-..-
ض…-
ظ..-
ع.-.-
غ–.
ف..-.
ق–.-
ك-.-
ل.-..
م
ن-.
ه..-..
و.–
ي..
.

Códigos de barras

El código de barras es un método de codificación para almacenar información humana en un formato de barras (de distinto grosor y espaciado).

Se almacena un dígito por cada barra. El tipo de esa barra y sus características es el tipo de información.

DígitoFuncionalidad
1Tipo de producto
2-6Código del fabricante
7-11Producto específico
12Dígito de verificación

De esta manera se puede almacenar información en un espacio mucho más reducido.

Código QR

Un código QR (del inglés Quick Response code), es la evolución del código de barras. Es un módulo para almacenar información en una matriz de datos o en un código de barras bidimensional.

La estructura general de un código QR es una matriz bidimensional de módulos de dos colores contrastados, en principio blancos y negros. Hay varias versiones de códigos QR según la cantidad de módulos que forman la matriz: van desde la versión 1 (con una matriz de 21 x 21 módulos) hasta la versión 10 (con 177 x 177 módulos).

Las versiones de más módulos admiten mayor cantidad de información en el código. Los códigos más extendidos para el uso del público en general suelen ser los de 25 x 25 y de 29 x 29, para captura desde el teléfono móvil o celular en cualquier situación (paquetes de productos, folletos de mano, tarjetas o carteles de pared).

Una de las utilidades estructurales de los códigos QR es que no es imprescindible que lo formen módulos blancos y negros, sino que admite una cierta personalización bastante flexible (otros colores, degradados, etc.). No obstante, cuando se usan otros colores distintos de blanco y negro, es necesario que sean suficientemente contrastados (claro y oscuro), para que continúe siendo legible para los sistemas y programas de lectura de los códigos.

Capacidad de datos del código QR
Solo numéricoMáximo 7089 caracteres
AlfanuméricoMáx. 4296 caracteres
BinarioMáx. 2953 bytes
Kanji/KanaMáx. 1817 caracteres
Capacidad de corrección de errores%
Nivel L7 % de las claves se pueden restaurar
Nivel M15 % de las claves se pueden restaurar
Nivel Q25 % de las claves se pueden restaurar
Nivel H30 % de las claves se pueden restaurar

Codificación electrónica

Bits - Pasado y presente

En la electrónica no todo se puede guiar por la parte digital. En el transporte de datos por medios físicos se debe hacer uso de ‘pulsos’ eléctricos (sea cual sea el medio de transporte; cables coaxial, fibra óptica, ethernet, etc ) que deben cumplir una regla;

  • Por encima de cierto umbral, se considera eso como un 1 (uno). Por debajo, se considera que no es un dato, si no una interferencia por ejemplo, y se considera un 0 (cero).

“Copyright https://www.prored.es”

Esto es así por que; cuando se transmite un dato de forma analógica por un medio, se dan las situaciones en donde se varia la intensidad de acuerdo al elemento utilizado y a la cantidad del mismo así como su intensidad.

Vamos a poner un ejemplo;

  • Cuando se transmite electrones (e), cada uno de esos electrones tiene siempre la misma carga eléctrica (−1,602 176 634 × 10−19) pero no es lo mismo que llegue al objetivo 50 e que 500x10^50 e (lo que se conoce como ‘amperaje’, como ya dijimos en la segunda sección de este libro).

    Si tenemos en cuenta que los electrones, en movimiento, generan campos magnéticos y se ven afectados por tales, esto termina ocasionando que en un sistema de transmisión de información físico analógico, dependiendo de la sensibilidad de los sensores, siempre se encuentre ciertos electrones que se están moviendo, por lo que para evitar estas interferencias (véase, ruido que no significa nada en términos de datos/información) se establece un umbral; de cierto voltaje para abajo se considera ruido y no un dato, a partir de cierto punto sí se considera un dato, y si se pasa de cierto valor se considera que puede ser otra interferencia de origen desconocido o una malfuncionalidad (como una descarga del proveedor o un PEM por una bomba o tormenta solar).

    “Cable coaxial”

    A muy grandes rasgos, tenemos muchos ejemplos de este tipo de sistemas;

    1. Los telégrafos, inventados en 1874, usan un sistema de codificación para que un humano pueda transmitir mensajes de texto a codificación, y viceversa en el caso de los que son capaces de ir transcribiendo a un papel las marcas de los pulsos. Se usaba una codificación de 5 bits (véase, cinco pulsos eléctricos válidos son 1 dato) llamada código Baudot, por lo que si tenemos en cuenta que - como se dijo anteriormente - un bit es (a nivel eléctrico); cero o uno (osea 2 valores) entonces 2^5 = 32 caracteres/letras/signos diferentes que se podían transmitir.

    2. El teletipo, que nació como evolución del telégrafo en 1904, permitía ya de forma automatizada la codificación y decodicación de las señales eléctricas recibidas hacia el alfabeto latino. De esta manera se logró automatizar toda la codificación de señales eléctricas hacia un alafabeto humano y viceversa. Si usted alguna vez vió películas de la segunda guerra mundial (1-09-1939 a 02-09-1945) seguramente habrá visto máqunas de rotores que recibian y enviaban mensajes por mujeres especializadas en tal;

    3. Unos ejemplos más modernos lo tenemos en las redes actuales.

      1. Conexion de red hogareña

        Esto es así por que; ocurre una codificación electrónica cuando llegan pulsos electro-ópticos desde el proveedor de internet y son procesados por el modem/router. Así mismo, ocurre otra codificación electrónica cuando el modem/router genera una onda electromagnética del espectro de radio que es recibido por el dispositivo, haciendo otra codificación electrónica para pasar eso a bits y poder procesarlo digitalmente.

      2. Redes informáticas empresariales

        Lo mismo que las redes hogareñas, pero generalmente no suele haber ondas inalámbricas, si no todo se conecta por red ethernet (que es más estable y rápido que el Wifi) y muchos más dispositivos.

Codificación digital

Una vez que un dispositivo obtiene una serie de bits (ceros o unos) en un determinado orden, viene la siguiente parte del proceso;

¿cómo se procesa esto? ¿qué hacemos con esto? ¿qué significa estos datos? ¿cuántos bits son un dato? y ese dato como se procesa?

Para esto tenemos la codificación digital. Antes de pasar a eso, tenemos que entender la codificación de bits;

Cantidad de BitsNombre del grupo
1Bit
8Byte
Grupos de BytesNombre del grupo
1024 B1 Kilobyte
1024 K = 1.048.576 bytes1 Megabyte
1024 M = 1.073.741.824 bytes1 Gigabyte
1024 G = 1.099.511.627.776 bytes1 Terabyte
1024 T = 1.0E+15 bytes1 Petabyte

Una vez comprendido eso, la codificación digital consiste en que una vez recibida una señal eléctrica se transforme al sistema binario, sabiendo utilizar la codificación pre establecida para así determinar cuando se deben enviar a la CPU (la unidad central de procesamiento, ‘el procesador’) y cuando faltan datos (no confundir dato con información. Un dato es ‘algo’, mientras que información es un dato útil para un fin).

Como ejemplo de esto tenemos;

  • Octal

    Es un estándar de codificación y decodificación. Establece que, utilizando un conjunto de base 8 (de cero a ocho) se pueden mostrar números en esa base. Al ser un sistema de numeración sirve para eso, números;

Conjunto de 4 bitsOctalDecimal
000000
000111
001022
001133
010044
010155
011066
011177
1000108
1001119
10101210
10111311
11001412
11011513
11101614
11111715
  • Hexadecimal

    Es un estándar de codificación y decodificación. Establece que, utilizando un conjunto de 4 bits (véase; BITS no bytes), se codifica como un valor X en hexadecimal.

Conjunto de 4 bitsHexadecimalDecimal
000000
000111
001022
001133
010044
010155
011066
011177
100088
100199
1010A10
1011B11
1100C12
1101D13
1110E14
1111F15

Por lo tanto, cuando se recibe estos datos;

010010000110111101101100011000010010000001001101011101010110111001100100011011110010110000100000011100110110111101111001001000000101001101101000011110010110000101101110010010100100110101000011

Si se utiliza la codificación hexadecimal quedaría;

486F6C61204D756E646F2C20736F7920536879616E4A4D43

Eso traspasado a ASCII es;

Hola Mundo, soy Shyanjmc

Entonces, ¿porqué es importante siempre usar la codificación correcta? Por que para el programa que recibe y procesa (decodifica) eso no es algo obvio que usar, si no que depende de la programación y del protocolo desde el que se recibe esa información. Por ejemplo, esa cadena de bits recibidos si se procesa directamente en ASCII y no en hexadecimal, se verá como;

�ÞØÂ@�è

Si usted se pregunta qué es el símbolo; “�” , es uno que utilizan los navegadores y los editores de texto para mostrar signos que decodificados en ASCII, ó UTF-8, dan un error.

Los valores en hexadecimal se representan con dos posibilidades;

  1. 0x[XXXXXXX]

    Siendo [XXXXXXX] el valor hexadecimal y “0x” el indicativo de que es hexadecimal.

  2. [XXXXXXX]h

    Siendo [XXXXXXX] el valor hexadecimal y “h” el indicativo de que es hexadecimal.

También se debe tener en cuenta una cosa; a pesar de que hay montones de herramientas que permiten transcribir entre unos y otros, a veces por limitaciones del programa utilizado se pueden dar pequeñas modificaciones que lo hagan retro-incompatible
  • ASCII (American Standard Code for Information Interchange)

    Es un sistema de codificación para caracteres basado en el alfabeto latino, creado en 1963 por el ANSI ( American National Standards Institute).

    Utiliza un esquema de 7 bits para representar los caracteres, pero hay otros varios estándares de codficación que le dan un octavo bit para que se puedan representar alfabetos no latino.

    Los primeros 32 dígitos son reservados como ‘caracteres de control’, véase; caracteres que no tienen la finalidad de ser representados en un alfabeto si no que son utilizados para controlar dispositivos físicos o virtuaes que usaban estos caracteres ASCII (como las impresoras, el terror de todo SysAdmin). De hecho cuando usted apreta el ‘Enter’ en realidad su teclado está enviando una serie de bits que son interpretados por su sistema como;

    ^M

    El ASCII de 7 bits queda de la siguiente manera;

BinarioDecimalHexAbreviaturaATNombre/Significado
0000 0000000NUL^@Carácter Nulo
0000 0001101SOH^AInicio de Encabezado
0000 0010202STX^BInicio de Texto
0000 0011303ETX^CFin de Texto
0000 0101505ENQ^EConsulta
0000 0100404EOT^DFin de Transmisión
0000 0110606ACK^FAcuse de recibo
0000 0111707BEL^GTimbre
0000 1000808BS^HRetroceso
0000 1001909HT^ITabulación horizontal
0000 1010100ALF^JSalto de línea
0000 1011110BVT^KTabulación Vertical
0000 1100120CFF^LAvance de página
0000 1101130DCR^MRetorno de carro
0000 1110140ESO^NDesactivar mayúsculas
0000 1111150FSI^OActivar mayúsculas
0001 00001610DLE^PEscape vínculo de datos
0001 00011711DC1^QControl de dispositivo 1 (XON)
0001 00101812DC2^RControl de dispositivo 2
0001 00111913DC3^SControl de dispositivo 3 (XOFF)
0001 01002014DC4^TControl de dispositivo 4
0001 01012115NAK^UAcuse de recibo negativo
0001 01102216SYN^VSíncronía en espera
0001 01112317ETB^WFin del bloque de transmisión
0001 10002418CAN^XCancelar
0001 10012519EM^YFin del medio
0001 1010261ASUB^ZSubstitución
0001 1011271BESC^[ o ESCEscape
0001 1100281CFS^\Separador de archivo
0001 1101291DGS^]Separador de grupo
0001 1110301ERS^^Separador de registro
0001 1111311FUS^_Separador de unidad
0111 11111277FDEL^? o DELSuprimir
0010 00003220espacio ( )
0010 00013321!
0010 00103422
0010 00113523#
0010 01003624$
0010 01013725%
0010 01103826&
0010 01113927
0010 10004028(
0010 10014129)
0010 1010422A*
0010 1011432B+
0010 1100442C,
0010 1101452D-
0010 1110462E.
0010 1111472F/
0011 000048300
0011 000149311
0011 001050322
0011 001151333
0011 010052344
0011 010153355
0011 011054366
0011 011155377
0011 100056388
0011 100157399
0011 1010583A:
0011 1011593B;
0011 1100603C<
0011 1101613D=
0011 1110623E>
0011 1111633F?
0100 00006440@
0100 00016541A
0100 00106642B
0100 00116743C
0100 01006844D
0100 01016945E
0100 01107046F
0100 01117147G
0100 10007248H
0100 10017349I
0100 1010744AJ
0100 1011754BK
0100 1100764CL
0100 1101774DM
0100 1110784EN
0100 1111794FO
0101 00008050P
0101 00018151Q
0101 00108252R
0101 00118353S
0101 01008454T
0101 01018555U
0101 01108656V
0101 01118757W
0101 10008858X
0101 10018959Y
0101 1010905AZ
0101 1011915B[
0101 1100925C\
0101 1101935D]
0101 1110945E^
0101 1111955F_
0110 00009660`
0110 00019761a
0110 00109862b
0110 00119963c
0110 010010064d
0110 010110165e
0110 011010266f
0110 011110367g
0110 100010468h
0110 100110569i
0110 10101066Aj
0110 10111076Bk
0110 11001086Cl
0110 11011096Dm
0110 11101106En
0110 11111116Fo
0111 000011270p
0111 000111371q
0111 001011472r
0111 001111573s
0111 010011674t
0111 010111775u
0111 011011876v
0111 011111977w
0111 100012078x
0111 100112179y
0111 10101227Az
0111 10111237B{
0111 11001247C
0111 11011257D}
0111 11101267E~

Preste atención de que el primer bit (de izquierda a derecha) nunca se utiliza, quedando siempre en cero, esto es para que se pueda usar cada caracter del ASCII con 1 Byte (que recuerden que son 8 bits) y por ende, ser mejor manejados en todos los sistemas operativos.

Dependiendo del procesador usado, puede utilizar BIG Endian o LITTLE Endian, en donde leerá el orden de los bits de izquierda a derecha o viceversa.

  • UTF-8 (Unicode Transformation Format)

    Es una evolución del ASCII y UTF-1. Fue creado por Robert C. Pike y Kenneth L. Thompson en 1992 para el sistema operativo Plan9.

    Es utilizado para representar los caracteres ‘Unicode’ (que incluyen desde todos los alfabetos hasta emojis).

    Está definido por el “RFC3629”, “ISO-10646” y posee las siguientes características;

    • Integra los 128 caracteres de ASCII, siendo así ASCII embebido dentro de UTF-8.
    • Duplica los bits usados por ASCII, quedando 16 bits, permitiendo muchos más alfabetos (griego, cirílico, armedio, hebreo, etc).
    • Triplica los bits usados por ASCII (que recuerde; utilizaba un solo byte), permitiendo que son el uso de 3 bytes (24 bits) se puedan representar todos los caracteres comunes en todos los idiomas mundiales.
    • Añade un 4to byte (quedando 32 bits) para poder representar; símbolos matemáticos, alfabetos de idiomas muertos (como alfabeto persa, fenicio, etc) y minoritarios (como al alfabeto Han).

    Ahora, teniendo 4 posibles de codificación diferentes, ¿cómo se hace para indicar cual usar? Bueno, los primeros bits de los bytes que se reciben determina cual usar;

BytesBytes a usar en la codificación
0xxxxxxx1
11xxxxxx 10xxxxxx2
111xxxxx 10xxxxxx 10xxxxxx3
1111xxxx 10xxxxxx 10xxxxxx 10xxxxxx4

Se debe tener en cuenta que Unicode-8 es GIGANTE por lo que acá solamente se deja una pequeña parte de todo el estándar, para ver la tabla completa, por favor vaya a la documentación.

Unicode code pointCaracterBinario U+TF-8
U++0000 00000000
U++0001 00000001
U++0002 00000010
U++0003 00000011
U++0004 00000100
U++0005 00000101
U++0006 00000110
U++0007 00000111
U++0008 00001000
U++0009 00001001
U++000A 00001010
U++000B 00001011
U++000C 00001100
U++000D 00001101
U++000E 00001110
U++000F 00001111
U++0010 00010000
U++0011 00010001
U++0012 00010010
U++0013 00010011
U++0014 00010100
U++0015 00010101
U++0016 00010110
U++0017 00010111
U++0018 00011000
U++0019 00011001
U++001A 00011010
U++001B 00011011
U++001C 00011100
U++001D 00011101
U++001E 00011110
U++001F 00011111
U++002000100000
U++0021!00100001
U++002200100010
U++0023#00100011
U++0024$00100100
U++0025%00100101
U++0026&00100110
U++002700100111
U++0028(00101000
U++0029)00101001
U++002A*00101010
U++002B+00101011
U++002C,00101100
U++002D-00101101
U++002E.00101110
U++002F/00101111
U++0030000110000
U++0031100110001
U++0032200110010
U++0033300110011
U++0034400110100
U++0035500110101
U++0036600110110
U++0037700110111
U++0038800111000
U++0039900111001
U++003A:00111010
U++003B;00111011
U++003C<00111100
U++003D=00111101
U++003E>00111110
U++003F?00111111
U++0040@01000000
U++0041A01000001
U++0042B01000010
U++0043C01000011
U++0044D01000100
U++0045E01000101
U++0046F01000110
U++0047G01000111
U++0048H01001000
U++0049I01001001
U++004AJ01001010
U++004BK01001011
U++004CL01001100
U++004DM01001101
U++004EN01001110
U++004FO01001111
U++0050P01010000
U++0051Q01010001
U++0052R01010010
U++0053S01010011
U++0054T01010100
U++0055U+
U++0056V01010110
U++0057W01010111
U++0058X01011000
U++0059Y01011001
U++005AZ01011010
U++005B[01011011
U++005C\01011100
U++005D]01011101
U++005E^01011110
U++005F_01011111
U++0060`01100000
U++0061a01100001
U++0062b01100010
U++0063c01100011
U++0064d01100100
U++0065e01100101
U++0066f01100110
U++0067g01100111
U++0068h01101000
U++0069i01101001
U++006Aj01101010
U++006Bk01101011
U++006Cl01101100
U++006Dm01101101
U++006En01101110
U++006Fo01101111
U++0070p01110000
U++0071q01110001
U++0072r01110010
U++0073s01110011
U++0074t01110100
U++0075U+
U++0076v01110110
U++0077w01110111
U++0078x01111000
U++0079y01111001
U++007Az01111010
U++007B{01111011
U++007C
U++007D}01111101
U++007E~01111110
U++007F 01111111
U++0080 11000010 10000000
U++0081 11000010 10000001
U++0082 11000010 10000010
U++0083 11000010 10000011
U++0084 11000010 10000100
U++0085 11000010 10000101
U++0086 11000010 10000110
U++0087 11000010 10000111
U++0088 11000010 10001000
U++0089 11000010 10001001
U++008A 11000010 10001010
U++008B 11000010 10001011
U++008C 11000010 10001100
U++008D 11000010 10001101
U++008E 11000010 10001110
U++008F 11000010 10001111
U++0090 11000010 10010000
U++0091 11000010 10010001
U++0092 11000010 10010010
U++0093 11000010 10010011
U++0094 11000010 10010100
U++0095 11000010 10010101
U++0096 11000010 10010110
U++0097 11000010 10010111
U++0098 11000010 10011000
U++0099 11000010 10011001
U++009A 11000010 10011010
U++009B 11000010 10011011
U++009C 11000010 10011100
U++009D 11000010 10011101
U++009E 11000010 10011110
U++009F 11000010 10011111
U++00A0 11000010 10100000
U++00A1¡11000010 10100001
U++00A2¢11000010 10100010
U++00A3£11000010 10100011
U++00A4¤11000010 10100100
U++00A5¥11000010 10100101
U++00A6¦11000010 10100110
U++00A7§11000010 10100111
U++00A8¨11000010 10101000
U++00A9©11000010 10101001
U++00AAª11000010 10101010
U++00AB«11000010 10101011
U++00AC¬11000010 10101100
U++00AD­11000010 10101101
U++00AE®11000010 10101110
U++00AF¯11000010 10101111
U++00B0°11000010 10110000
U++00B1±11000010 10110001
U++00B2²11000010 10110010
U++00B3³11000010 10110011
U++00B4´11000010 10110100
U++00B5µ11000010 10110101
U++00B611000010 10110110
U++00B7·11000010 10110111
U++00B8¸11000010 10111000
U++00B9¹11000010 10111001
U++00BAº11000010 10111010
U++00BB»11000010 10111011
U++00BC¼11000010 10111100
U++00BD½11000010 10111101
U++00BE¾11000010 10111110
U++00BF¿11000010 10111111
U++00C0À11000011 10000000
U++00C1Á11000011 10000001
U++00C2Â11000011 10000010
U++00C3Ã11000011 10000011
U++00C4Ä11000011 10000100
U++00C5Å11000011 10000101
U++00C6Æ11000011 10000110
U++00C7Ç11000011 10000111
U++00C8È11000011 10001000
U++00C9É11000011 10001001
U++00CAÊ11000011 10001010
U++00CBË11000011 10001011
U++00CCÌ11000011 10001100
U++00CDÍ11000011 10001101
U++00CEÎ11000011 10001110
U++00CFÏ11000011 10001111
U++00D0Ð11000011 10010000
U++00D1Ñ11000011 10010001
U++00D2Ò11000011 10010010
U++00D3Ó11000011 10010011
U++00D4Ô11000011 10010100
U++00D5Õ11000011 10010101
U++00D6Ö11000011 10010110
U++00D7×11000011 10010111
U++00D8Ø11000011 10011000
U++00D9Ù11000011 10011001
U++00DAÚ11000011 10011010
U++00DBÛ11000011 10011011
U++00DCÜ11000011 10011100
U++00DDÝ11000011 10011101
U++00DEÞ11000011 10011110
U++00DFß11000011 10011111
U++00E0à11000011 10100000
U++00E1á11000011 10100001
U++00E2â11000011 10100010
U++00E3ã11000011 10100011
U++00E4ä11000011 10100100
U++00E5å11000011 10100101
U++00E6æ11000011 10100110
U++00E7ç11000011 10100111
U++00E8è11000011 10101000
U++00E9é11000011 10101001
U++00EAê11000011 10101010
U++00EBë11000011 10101011
U++00ECì11000011 10101100
U++00EDí11000011 10101101
U++00EEî11000011 10101110
U++00EFï11000011 10101111
U++00F0ð11000011 10110000
U++00F1ñ11000011 10110001
U++00F2ò11000011 10110010
U++00F3ó11000011 10110011
U++00F4ô11000011 10110100
U++00F5õ11000011 10110101
U++00F6ö11000011 10110110
U++00F7÷11000011 10110111
U++00F8ø11000011 10111000
U++00F9ù11000011 10111001
U++00FAú11000011 10111010
U++00FBû11000011 10111011
U++00FCü11000011 10111100
U++00FDý11000011 10111101
U++00FEþ11000011 10111110
U++00FFÿ11000011 10111111
U++0100Ā11000100 10000000
U++0101ā11000100 10000001
U++0102Ă11000100 10000010
U++0103ă11000100 10000011
U++0104Ą11000100 10000100
U++0105ą11000100 10000101
U++0106Ć11000100 10000110
U++0107ć11000100 10000111
U++0108Ĉ11000100 10001000
U++0109ĉ11000100 10001001
U++010AĊ11000100 10001010
U++010Bċ11000100 10001011
U++010CČ11000100 10001100
U++010Dč11000100 10001101
U++010EĎ11000100 10001110
U++010Fď11000100 10001111
U++0110Đ11000100 10010000
U++0111đ11000100 10010001
U++0112Ē11000100 10010010
U++0113ē11000100 10010011
U++0114Ĕ11000100 10010100
U++0115ĕ11000100 10010101
U++0116Ė11000100 10010110
U++0117ė11000100 10010111
U++0118Ę11000100 10011000
U++0119ę11000100 10011001
U++011AĚ11000100 10011010
U++011Bě11000100 10011011
U++011CĜ11000100 10011100
U++011Dĝ11000100 10011101
U++011EĞ11000100 10011110
U++011Fğ11000100 10011111
U++0120Ġ11000100 10100000
U++0121ġ11000100 10100001
U++0122Ģ11000100 10100010
U++0123ģ11000100 10100011
U++0124Ĥ11000100 10100100
U++0125ĥ11000100 10100101
U++0126Ħ11000100 10100110
U++0127ħ11000100 10100111
U++0128Ĩ11000100 10101000
U++0129ĩ11000100 10101001
U++012AĪ11000100 10101010
U++012Bī11000100 10101011
U++012CĬ11000100 10101100
U++012Dĭ11000100 10101101
U++012EĮ11000100 10101110
U++012Fį11000100 10101111
U++0130İ11000100 10110000
U++0131ı11000100 10110001
U++0132IJ11000100 10110010
U++0133ij11000100 10110011
U++0134Ĵ11000100 10110100
U++0135ĵ11000100 10110101
U++0136Ķ11000100 10110110
U++0137ķ11000100 10110111
U++0138ĸ11000100 10111000
U++0139Ĺ11000100 10111001
U++013Aĺ11000100 10111010
U++013BĻ11000100 10111011
U++013Cļ11000100 10111100
U++013DĽ11000100 10111101
U++013Eľ11000100 10111110
U++013FĿ11000100 10111111
U++0140ŀ11000101 10000000
U++0141Ł11000101 10000001
U++0142ł11000101 10000010
U++0143Ń11000101 10000011
U++0144ń11000101 10000100
U++0145Ņ11000101 10000101
U++0146ņ11000101 10000110
U++0147Ň11000101 10000111
U++0148ň11000101 10001000
U++0149ʼn11000101 10001001
U++014AŊ11000101 10001010
U++014Bŋ11000101 10001011
U++014CŌ11000101 10001100
U++014Dō11000101 10001101
U++014EŎ11000101 10001110
U++014Fŏ11000101 10001111
U++0150Ő11000101 10010000
U++0151ő11000101 10010001
U++0152Œ11000101 10010010
U++0153œ11000101 10010011
U++0154Ŕ11000101 10010100
U++0155ŕ11000101 10010101
U++0156Ŗ11000101 10010110
U++0157ŗ11000101 10010111
U++0158Ř11000101 10011000
U++0159ř11000101 10011001
U++015AŚ11000101 10011010
U++015Bś11000101 10011011
U++015CŜ11000101 10011100
U++015Dŝ11000101 10011101
U++015EŞ11000101 10011110
U++015Fş11000101 10011111
U++0160Š11000101 10100000
U++0161š11000101 10100001
U++0162Ţ11000101 10100010
U++0163ţ11000101 10100011
U++0164Ť11000101 10100100
U++0165ť11000101 10100101
U++0166Ŧ11000101 10100110
U++0167ŧ11000101 10100111
U++0168Ũ11000101 10101000
U++0169ũ11000101 10101001
U++016AŪ11000101 10101010
U++016Bū11000101 10101011
U++016CŬ11000101 10101100
U++016Dŭ11000101 10101101
U++016EŮ11000101 10101110
U++016Fů11000101 10101111
U++0170Ű11000101 10110000
U++0171ű11000101 10110001
U++0172Ų11000101 10110010
U++0173ų11000101 10110011
U++0174Ŵ11000101 10110100
U++0175ŵ11000101 10110101
U++0176Ŷ11000101 10110110
U++0177ŷ11000101 10110111
U++0178Ÿ11000101 10111000
U++0179Ź11000101 10111001
U++017Aź11000101 10111010
U++017BŻ11000101 10111011
U++017Cż11000101 10111100
U++017DŽ11000101 10111101
U++017Ež11000101 10111110
U++017Fſ11000101 10111111
U++0180ƀ11000110 10000000
U++0181Ɓ11000110 10000001
U++0182Ƃ11000110 10000010
U++0183ƃ11000110 10000011
U++0184Ƅ11000110 10000100
U++0185ƅ11000110 10000101
U++0186Ɔ11000110 10000110
U++0187Ƈ11000110 10000111
U++0188ƈ11000110 10001000
U++0189Ɖ11000110 10001001
U++018AƊ11000110 10001010
U++018BƋ11000110 10001011
U++018Cƌ11000110 10001100
U++018Dƍ11000110 10001101
U++018EƎ11000110 10001110
U++018FƏ11000110 10001111
U++0190Ɛ11000110 10010000
U++0191Ƒ11000110 10010001
U++0192ƒ11000110 10010010
U++0193Ɠ11000110 10010011
U++0194Ɣ11000110 10010100
U++0195ƕ11000110 10010101
U++0196Ɩ11000110 10010110
U++0197Ɨ11000110 10010111
U++0198Ƙ11000110 10011000
U++0199ƙ11000110 10011001
U++019Aƚ11000110 10011010
U++019Bƛ11000110 10011011
U++019CƜ11000110 10011100
U++019DƝ11000110 10011101
U++019Eƞ11000110 10011110
U++019FƟ11000110 10011111
U++01A0Ơ11000110 10100000
U++01A1ơ11000110 10100001
U++01A2Ƣ11000110 10100010
U++01A3ƣ11000110 10100011
U++01A4Ƥ11000110 10100100
U++01A5ƥ11000110 10100101
U++01A6Ʀ11000110 10100110
U++01A7Ƨ11000110 10100111
U++01A8ƨ11000110 10101000
U++01A9Ʃ11000110 10101001
U++01AAƪ11000110 10101010
U++01ABƫ11000110 10101011
U++01ACƬ11000110 10101100
U++01ADƭ11000110 10101101
U++01AEƮ11000110 10101110
U++01AFƯ11000110 10101111
U++01B0ư11000110 10110000
U++01B1Ʊ11000110 10110001
U++01B2Ʋ11000110 10110010
U++01B3Ƴ11000110 10110011
U++01B4ƴ11000110 10110100
U++01B5Ƶ11000110 10110101
U++01B6ƶ11000110 10110110
U++01B7Ʒ11000110 10110111
U++01B8Ƹ11000110 10111000
U++01B9ƹ11000110 10111001
U++01BAƺ11000110 10111010
U++01BBƻ11000110 10111011
U++01BCƼ11000110 10111100
U++01BDƽ11000110 10111101
U++01BEƾ11000110 10111110
U++01BFƿ11000110 10111111
U++01C0ǀ11000111 10000000
U++01C1ǁ11000111 10000001
U++01C2ǂ11000111 10000010
U++01C3ǃ11000111 10000011
U++01C4DŽ11000111 10000100
U++01C5Dž11000111 10000101
U++01C6dž11000111 10000110
U++01C7LJ11000111 10000111
U++01C8Lj11000111 10001000
U++01C9lj11000111 10001001
U++01CANJ11000111 10001010
U++01CBNj11000111 10001011
U++01CCnj11000111 10001100
U++01CDǍ11000111 10001101
U++01CEǎ11000111 10001110
U++01CFǏ11000111 10001111
U++01D0ǐ11000111 10010000
U++01D1Ǒ11000111 10010001
U++01D2ǒ11000111 10010010
U++01D3Ǔ11000111 10010011
U++01D4ǔ11000111 10010100
U++01D5Ǖ11000111 10010101
U++01D6ǖ11000111 10010110
U++01D7Ǘ11000111 10010111
U++01D8ǘ11000111 10011000
U++01D9Ǚ11000111 10011001
U++01DAǚ11000111 10011010
U++01DBǛ11000111 10011011
U++01DCǜ11000111 10011100
U++01DDǝ11000111 10011101
U++01DEǞ11000111 10011110
U++01DFǟ11000111 10011111
U++01E0Ǡ11000111 10100000
U++01E1ǡ11000111 10100001
U++01E2Ǣ11000111 10100010
U++01E3ǣ11000111 10100011
U++01E4Ǥ11000111 10100100
U++01E5ǥ11000111 10100101
U++01E6Ǧ11000111 10100110
U++01E7ǧ11000111 10100111
U++01E8Ǩ11000111 10101000
U++01E9ǩ11000111 10101001
U++01EAǪ11000111 10101010
U++01EBǫ11000111 10101011
U++01ECǬ11000111 10101100
U++01EDǭ11000111 10101101
U++01EEǮ11000111 10101110
U++01EFǯ11000111 10101111
U++01F0ǰ11000111 10110000
U++01F1DZ11000111 10110001
U++01F2Dz11000111 10110010
U++01F3dz11000111 10110011
U++01F4Ǵ11000111 10110100
U++01F5ǵ11000111 10110101
U++01F6Ƕ11000111 10110110
U++01F7Ƿ11000111 10110111
U++01F8Ǹ11000111 10111000
U++01F9ǹ11000111 10111001
U++01FAǺ11000111 10111010
U++01FBǻ11000111 10111011
U++01FCǼ11000111 10111100
U++01FDǽ11000111 10111101
U++01FEǾ11000111 10111110
U++01FFǿ11000111 10111111
U++0200Ȁ11001000 10000000
U++0201ȁ11001000 10000001
U++0202Ȃ11001000 10000010
U++0203ȃ11001000 10000011
U++0204Ȅ11001000 10000100
U++0205ȅ11001000 10000101
U++0206Ȇ11001000 10000110
U++0207ȇ11001000 10000111
U++0208Ȉ11001000 10001000
U++0209ȉ11001000 10001001
U++020AȊ11001000 10001010
U++020Bȋ11001000 10001011
U++020CȌ11001000 10001100
U++020Dȍ11001000 10001101
U++020EȎ11001000 10001110
U++020Fȏ11001000 10001111
U++0210Ȑ11001000 10010000
U++0211ȑ11001000 10010001
U++0212Ȓ11001000 10010010
U++0213ȓ11001000 10010011
U++0214Ȕ11001000 10010100
U++0215ȕ11001000 10010101
U++0216Ȗ11001000 10010110
U++0217ȗ11001000 10010111
U++0218Ș11001000 10011000
U++0219ș11001000 10011001
U++021AȚ11001000 10011010
U++021Bț11001000 10011011
U++021CȜ11001000 10011100
U++021Dȝ11001000 10011101
U++021EȞ11001000 10011110
U++021Fȟ11001000 10011111
U++0220Ƞ11001000 10100000
U++0221ȡ11001000 10100001
U++0222Ȣ11001000 10100010
U++0223ȣ11001000 10100011
U++0224Ȥ11001000 10100100
U++0225ȥ11001000 10100101
U++0226Ȧ11001000 10100110
U++0227ȧ11001000 10100111
U++0228Ȩ11001000 10101000
U++0229ȩ11001000 10101001
U++022AȪ11001000 10101010
U++022Bȫ11001000 10101011
U++022CȬ11001000 10101100
U++022Dȭ11001000 10101101
U++022EȮ11001000 10101110
U++022Fȯ11001000 10101111
U++0230Ȱ11001000 10110000
U++0231ȱ11001000 10110001
U++0232Ȳ11001000 10110010
U++0233ȳ11001000 10110011
U++0234ȴ11001000 10110100
U++0235ȵ11001000 10110101
U++0236ȶ11001000 10110110
U++0237ȷ11001000 10110111
U++0238ȸ11001000 10111000
U++0239ȹ11001000 10111001
U++023AȺ11001000 10111010
U++023BȻ11001000 10111011
U++023Cȼ11001000 10111100
U++023DȽ11001000 10111101
U++023EȾ11001000 10111110
U++023Fȿ11001000 10111111
U++0240ɀ11001001 10000000
U++0241Ɂ11001001 10000001
U++0242ɂ11001001 10000010
U++0243Ƀ11001001 10000011
U++0244Ʉ11001001 10000100
U++0245Ʌ11001001 10000101
U++0246Ɇ11001001 10000110
U++0247ɇ11001001 10000111
U++0248Ɉ11001001 10001000
U++0249ɉ11001001 10001001
U++024AɊ11001001 10001010
U++024Bɋ11001001 10001011
U++024CɌ11001001 10001100
U++024Dɍ11001001 10001101
U++024EɎ11001001 10001110
U++024Fɏ11001001 10001111
U++0250ɐ11001001 10010000
U++0251ɑ11001001 10010001
U++0252ɒ11001001 10010010
U++0253ɓ11001001 10010011
U++0254ɔ11001001 10010100
U++0255ɕ11001001 10010101
U++0256ɖ11001001 10010110
U++0257ɗ11001001 10010111
U++0258ɘ11001001 10011000
U++0259ə11001001 10011001
U++025Aɚ11001001 10011010
U++025Bɛ11001001 10011011
U++025Cɜ11001001 10011100
U++025Dɝ11001001 10011101
U++025Eɞ11001001 10011110
U++025Fɟ11001001 10011111
U++0260ɠ11001001 10100000
U++0261ɡ11001001 10100001
U++0262ɢ11001001 10100010
U++0263ɣ11001001 10100011
U++0264ɤ11001001 10100100
U++0265ɥ11001001 10100101
U++0266ɦ11001001 10100110
U++0267ɧ11001001 10100111
U++0268ɨ11001001 10101000
U++0269ɩ11001001 10101001
U++026Aɪ11001001 10101010
U++026Bɫ11001001 10101011
U++026Cɬ11001001 10101100
U++026Dɭ11001001 10101101
U++026Eɮ11001001 10101110
U++026Fɯ11001001 10101111
U++0270ɰ11001001 10110000
U++0271ɱ11001001 10110001
U++0272ɲ11001001 10110010
U++0273ɳ11001001 10110011
U++0274ɴ11001001 10110100
U++0275ɵ11001001 10110101
U++0276ɶ11001001 10110110
U++0277ɷ11001001 10110111
U++0278ɸ11001001 10111000
U++0279ɹ11001001 10111001
U++027Aɺ11001001 10111010
U++027Bɻ11001001 10111011
U++027Cɼ11001001 10111100
U++027Dɽ11001001 10111101
U++027Eɾ11001001 10111110
U++027Fɿ11001001 10111111
U++0280ʀ11001010 10000000
U++0281ʁ11001010 10000001
U++0282ʂ11001010 10000010
U++0283ʃ11001010 10000011
U++0284ʄ11001010 10000100
U++0285ʅ11001010 10000101
U++0286ʆ11001010 10000110
U++0287ʇ11001010 10000111
U++0288ʈ11001010 10001000
U++0289ʉ11001010 10001001
U++028Aʊ11001010 10001010
U++028Bʋ11001010 10001011
U++028Cʌ11001010 10001100
U++028Dʍ11001010 10001101
U++028Eʎ11001010 10001110
U++028Fʏ11001010 10001111
U++0290ʐ11001010 10010000
U++0291ʑ11001010 10010001
U++0292ʒ11001010 10010010
U++0293ʓ11001010 10010011
U++0294ʔ11001010 10010100
U++0295ʕ11001010 10010101
U++0296ʖ11001010 10010110
U++0297ʗ11001010 10010111
U++0298ʘ11001010 10011000
U++0299ʙ11001010 10011001
U++029Aʚ11001010 10011010
U++029Bʛ11001010 10011011
U++029Cʜ11001010 10011100
U++029Dʝ11001010 10011101
U++029Eʞ11001010 10011110
U++029Fʟ11001010 10011111
U++02A0ʠ11001010 10100000
U++02A1ʡ11001010 10100001
U++02A2ʢ11001010 10100010
U++02A3ʣ11001010 10100011
U++02A4ʤ11001010 10100100
U++02A5ʥ11001010 10100101
U++02A6ʦ11001010 10100110
U++02A7ʧ11001010 10100111
U++02A8ʨ11001010 10101000
U++02A9ʩ11001010 10101001
U++02AAʪ11001010 10101010
U++02ABʫ11001010 10101011
U++02ACʬ11001010 10101100
U++02ADʭ11001010 10101101
U++02AEʮ11001010 10101110
U++02AFʯ11001010 10101111
U++02B0ʰ11001010 10110000
U++02B1ʱ11001010 10110001
U++02B2ʲ11001010 10110010
U++02B3ʳ11001010 10110011
U++02B4ʴ11001010 10110100
U++02B5ʵ11001010 10110101
U++02B6ʶ11001010 10110110
U++02B7ʷ11001010 10110111
U++02B8ʸ11001010 10111000
U++02B9ʹ11001010 10111001
U++02BAʺ11001010 10111010
U++02BBʻ11001010 10111011
U++02BCʼ11001010 10111100
U++02BDʽ11001010 10111101
U++02BEʾ11001010 10111110
U++02BFʿ11001010 10111111
U++02C0ˀ11001011 10000000
U++02C1ˁ11001011 10000001
U++02C2˂11001011 10000010
U++02C3˃11001011 10000011
U++02C4˄11001011 10000100
U++02C5˅11001011 10000101
U++02C6ˆ11001011 10000110
U++02C7ˇ11001011 10000111
U++02C8ˈ11001011 10001000
U++02C9ˉ11001011 10001001
U++02CAˊ11001011 10001010
U++02CBˋ11001011 10001011
U++02CCˌ11001011 10001100
U++02CDˍ11001011 10001101
U++02CEˎ11001011 10001110
U++02CFˏ11001011 10001111
U++02D0ː11001011 10010000
U++02D1ˑ11001011 10010001
U++02D2˒11001011 10010010
U++02D3˓11001011 10010011
U++02D4˔11001011 10010100
U++02D5˕11001011 10010101
U++02D6˖11001011 10010110
U++02D7˗11001011 10010111
U++02D8˘11001011 10011000
U++02D9˙11001011 10011001
U++02DA˚11001011 10011010
U++02DB˛11001011 10011011
U++02DC˜11001011 10011100
U++02DD˝11001011 10011101
U++02DE˞11001011 10011110
U++02DF˟11001011 10011111
U++02E0ˠ11001011 10100000
U++02E1ˡ11001011 10100001
U++02E2ˢ11001011 10100010
U++02E3ˣ11001011 10100011
U++02E4ˤ11001011 10100100
U++02E5˥11001011 10100101
U++02E6˦11001011 10100110
U++02E7˧11001011 10100111
U++02E8˨11001011 10101000
U++02E9˩11001011 10101001
U++02EA˪11001011 10101010
U++02EB˫11001011 10101011
U++02ECˬ11001011 10101100
U++02ED˭11001011 10101101
U++02EEˮ11001011 10101110
U++02EF˯11001011 10101111
U++02F0˰11001011 10110000
U++02F1˱11001011 10110001
U++02F2˲11001011 10110010
U++02F3˳11001011 10110011
U++02F4˴11001011 10110100
U++02F5˵11001011 10110101
U++02F6˶11001011 10110110
U++02F7˷11001011 10110111
U++02F8˸11001011 10111000
U++02F9˹11001011 10111001
U++02FA˺11001011 10111010
U++02FB˻11001011 10111011
U++02FC˼11001011 10111100
U++02FD˽11001011 10111101
U++02FE˾11001011 10111110
U++02FF˿11001011 10111111
U++0300̀11001100 10000000
U++0301́11001100 10000001
U++0302̂11001100 10000010
U++0303̃11001100 10000011
U++0304̄11001100 10000100
U++0305̅11001100 10000101
U++0306̆11001100 10000110
U++0307̇11001100 10000111
U++0308̈11001100 10001000
U++0309̉11001100 10001001
U++030Å11001100 10001010
U++030B̋11001100 10001011
U++030Č11001100 10001100
U++030D̍11001100 10001101
U++030E̎11001100 10001110
U++030F̏11001100 10001111
U++0310̐11001100 10010000
U++0311̑11001100 10010001
U++0312̒11001100 10010010
U++0313̓11001100 10010011
U++0314̔11001100 10010100
U++0315̕11001100 10010101
U++0316̖11001100 10010110
U++0317̗11001100 10010111
U++0318̘11001100 10011000
U++0319̙11001100 10011001
U++031A̚11001100 10011010
U++031B̛11001100 10011011
U++031C̜11001100 10011100
U++031D̝11001100 10011101
U++031E̞11001100 10011110
U++031F̟11001100 10011111
U++0320̠11001100 10100000
U++0321̡11001100 10100001
U++0322̢11001100 10100010
U++0323̣11001100 10100011
U++0324̤11001100 10100100
U++0325̥11001100 10100101
U++0326̦11001100 10100110
U++0327̧11001100 10100111
U++0328̨11001100 10101000
U++0329̩11001100 10101001
U++032A̪11001100 10101010
U++032B̫11001100 10101011
U++032C̬11001100 10101100
U++032Ḓ11001100 10101101
U++032E̮11001100 10101110
U++032F̯11001100 10101111
U++0330̰11001100 10110000
U++0331̱11001100 10110001
U++0332̲11001100 10110010
U++0333̳11001100 10110011
U++0334̴11001100 10110100
U++0335̵11001100 10110101
U++0336̶11001100 10110110
U++0337̷11001100 10110111
U++0338̸11001100 10111000
U++0339̹11001100 10111001
U++033A̺11001100 10111010
U++033B̻11001100 10111011
U++033C̼11001100 10111100
U++033D̽11001100 10111101
U++033E̾11001100 10111110
U++033F̿11001100 10111111
U++0340̀11001101 10000000
U++0341́11001101 10000001
U++0342͂11001101 10000010
U++0343̓11001101 10000011
U++0344̈́11001101 10000100
U++0345ͅ11001101 10000101
U++0346͆11001101 10000110
U++0347͇11001101 10000111
U++0348͈11001101 10001000
U++0349͉11001101 10001001
U++034A͊11001101 10001010
U++034B͋11001101 10001011
U++034C͌11001101 10001100
U++034D͍11001101 10001101
U++034E͎11001101 10001110
U++034F͏11001101 10001111
U++0350͐11001101 10010000
U++0351͑11001101 10010001
U++0352͒11001101 10010010
U++0353͓11001101 10010011
U++0354͔11001101 10010100
U++0355͕11001101 10010101
U++0356͖11001101 10010110
U++0357͗11001101 10010111
U++0358͘11001101 10011000
U++0359͙11001101 10011001
U++035A͚11001101 10011010
U++035B͛11001101 10011011
U++035C͜11001101 10011100
U++035D͝11001101 10011101
U++035E͞11001101 10011110
U++035F͟11001101 10011111
U++0360͠11001101 10100000
U++0361͡11001101 10100001
U++0362͢11001101 10100010
U++0363ͣ11001101 10100011
U++0364ͤ11001101 10100100
U++0365ͥ11001101 10100101
U++0366ͦ11001101 10100110
U++0367ͧ11001101 10100111
U++0368ͨ11001101 10101000
U++0369ͩ11001101 10101001
U++036Aͪ11001101 10101010
U++036Bͫ11001101 10101011
U++036Cͬ11001101 10101100
U++036Dͭ11001101 10101101
U++036Eͮ11001101 10101110
U++036Fͯ11001101 10101111
U++0370Ͱ11001101 10110000
U++0371ͱ11001101 10110001
U++0372Ͳ11001101 10110010
U++0373ͳ11001101 10110011
U++0374ʹ11001101 10110100
U++0375͵11001101 10110101
U++0376Ͷ11001101 10110110
U++0377ͷ11001101 10110111
U++0378͸11001101 10111000
U++0379͹11001101 10111001
U++037Aͺ11001101 10111010
U++037Bͻ11001101 10111011
U++037Cͼ11001101 10111100
U++037Dͽ11001101 10111101
U++037E;11001101 10111110
U++037FͿ11001101 10111111
U++0380΀11001110 10000000
U++0381΁11001110 10000001
U++0382΂11001110 10000010
U++0383΃11001110 10000011
U++0384΄11001110 10000100
U++0385΅11001110 10000101
U++0386Ά11001110 10000110
U++0387·11001110 10000111
U++0388Έ11001110 10001000
U++0389Ή11001110 10001001
U++038AΊ11001110 10001010
U++038B΋11001110 10001011
U++038CΌ11001110 10001100
U++038D΍11001110 10001101
U++038EΎ11001110 10001110
U++038FΏ11001110 10001111
U++0390ΐ11001110 10010000
U++0391Α11001110 10010001
U++0392Β11001110 10010010
U++0393Γ11001110 10010011
U++0394Δ11001110 10010100
U++0395Ε11001110 10010101
U++0396Ζ11001110 10010110
U++0397Η11001110 10010111
U++0398Θ11001110 10011000
U++0399Ι11001110 10011001
U++039AΚ11001110 10011010
U++039BΛ11001110 10011011
U++039CΜ11001110 10011100
U++039DΝ11001110 10011101
U++039EΞ11001110 10011110
U++039FΟ11001110 10011111
U++03A0Π11001110 10100000
U++03A1Ρ11001110 10100001
U++03A2΢11001110 10100010
U++03A3Σ11001110 10100011
U++03A4Τ11001110 10100100
U++03A5Υ11001110 10100101
U++03A6Φ11001110 10100110
U++03A7Χ11001110 10100111
U++03A8Ψ11001110 10101000
U++03A9Ω11001110 10101001
U++03AAΪ11001110 10101010
U++03ABΫ11001110 10101011
U++03ACά11001110 10101100
U++03ADέ11001110 10101101
U++03AEή11001110 10101110
U++03AFί11001110 10101111
U++03B0ΰ11001110 10110000
U++03B1α11001110 10110001
U++03B2β11001110 10110010
U++03B3γ11001110 10110011
U++03B4δ11001110 10110100
U++03B5ε11001110 10110101
U++03B6ζ11001110 10110110
U++03B7η11001110 10110111
U++03B8θ11001110 10111000
U++03B9ι11001110 10111001
U++03BAκ11001110 10111010
U++03BBλ11001110 10111011
U++03BCμ11001110 10111100
U++03BDν11001110 10111101
U++03BEξ11001110 10111110
U++03BFο11001110 10111111
U++03C0π11001111 10000000
U++03C1ρ11001111 10000001
U++03C2ς11001111 10000010
U++03C3σ11001111 10000011
U++03C4τ11001111 10000100
U++03C5υ11001111 10000101
U++03C6φ11001111 10000110
U++03C7χ11001111 10000111
U++03C8ψ11001111 10001000
U++03C9ω11001111 10001001
U++03CAϊ11001111 10001010
U++03CBϋ11001111 10001011
U++03CCό11001111 10001100
U++03CDύ11001111 10001101
U++03CEώ11001111 10001110
U++03CFϏ11001111 10001111
U++03D0ϐ11001111 10010000
U++03D1ϑ11001111 10010001
U++03D2ϒ11001111 10010010
U++03D3ϓ11001111 10010011
U++03D4ϔ11001111 10010100
U++03D5ϕ11001111 10010101
U++03D6ϖ11001111 10010110
U++03D7ϗ11001111 10010111
U++03D8Ϙ11001111 10011000
U++03D9ϙ11001111 10011001
U++03DAϚ11001111 10011010
U++03DBϛ11001111 10011011
U++03DCϜ11001111 10011100
U++03DDϝ11001111 10011101
U++03DEϞ11001111 10011110
U++03DFϟ11001111 10011111
U++03E0Ϡ11001111 10100000
U++03E1ϡ11001111 10100001
U++03E2Ϣ11001111 10100010
U++03E3ϣ11001111 10100011
U++03E4Ϥ11001111 10100100
U++03E5ϥ11001111 10100101
U++03E6Ϧ11001111 10100110
U++03E7ϧ11001111 10100111
U++03E8Ϩ11001111 10101000
U++03E9ϩ11001111 10101001
U++03EAϪ11001111 10101010
U++03EBϫ11001111 10101011
U++03ECϬ11001111 10101100
U++03EDϭ11001111 10101101
U++03EEϮ11001111 10101110
U++03EFϯ11001111 10101111
U++03F0ϰ11001111 10110000
U++03F1ϱ11001111 10110001
U++03F2ϲ11001111 10110010
U++03F3ϳ11001111 10110011
U++03F4ϴ11001111 10110100
U++03F5ϵ11001111 10110101
U++03F6϶11001111 10110110
U++03F7Ϸ11001111 10110111
U++03F8ϸ11001111 10111000
U++03F9Ϲ11001111 10111001
U++03FAϺ11001111 10111010
U++03FBϻ11001111 10111011
U++03FCϼ11001111 10111100
U++03FDϽ11001111 10111101
U++03FEϾ11001111 10111110
U++03FFϿ11001111 10111111
  • UTF-16 (UCS Transformation Format for 16 Planes of Group 00)

    No es una evolución de UTF-8 si no una de UCS-2 (otro estándar de codificación).

    Al igual que UTF-8, es utilizado para representar los caracteres ‘Unicode’ (que incluyen desde todos los alfabetos hasta emojis).

    Utiliza 16 bits mínimamente por caracter a representar, como UTF-8 utiliza mínimamente 8 bits.

    Para no sumergirnos más en la profunda madriguera de conejo, debido a que tendríamos que entrar con funciones matemáticas, lo dejaremos acá.

UTF-8UTF-16
Mínimo espacio de 8 bitsMínimo espacio de 16 bits
Soporta de manera completa y absoluta el ASCIIMuchos de los caracteres de ASCII caen inválidos como ‘caracteres nulos’, rompiendo retrocompatibilidades
Muchos caracteres de idiomas con alfabetos no latinos tienen longitudes de espacio en bits diferentes, ralentizando su procesamientoLa mayoría de los caracteres de todo el mundo entran en 2 bytes, por lo que UTF-16 es más rápido
Soporta Unicode completoSoporta Unicode completo
Requiere 3 bytes para los caracteres asiáticosRequiere 2 bytes para los caracteres asiáticos
  • Base64

    Este sistema de codificación-decodificación es excelente por un motivo; se utiliza principalmente para transmitir cualquier datos en red entre servidor-cliente sin poner en riesgo su integridad. Utiliza un sistema de 6 bits para definir a qué caracter se representa en el alfabeto latino.

    Se encuentra definido en el estándar “RFC-4648” con la siguiente tabla;

DecimalBinarioLetra
0000000A
1000001B
2000010C
3000011D
4000100E
5000101F
6000110G
7000111H
8001000I
9001001J
10001010K
11001011L
12001100M
13001101N
14001110O
15001111P
16010000Q
17010001R
18010010S
19010011T
20010100U
21010101V
22010110W
23010111X
24011000Y
25011001Z
26011010a
27011011b
28011100c
29011101d
30011110e
31011111f
32100000g
33100001h
34100010i
35100011j
36100100k
37100101l
38100110m
39100111n
40101000o
41101001p
42101010q
43101011r
44101100s
45101101t
46101110u
47101111v
48110000w
49110001x
50110010y
51110011z
521101000
531101011
541101102
551101113
561110004
571110015
581110106
591110117
601111008
611111019
62111110+
63111111/
64-=

El símbolo de igualación (‘=’) es utilizado para marcar el final de la cadena de caracteres codificados en Base64. Es indicador de que eso último codificado no es múltiplo de 24 bits y por ende se añade al final el padding (‘=’) para terminar de completar ese múltiplo.

Programas y usos muy communes en toda la internet para Base64 son;

 - PEM (Privacy enhanced mail).
 - MIME (Multipurpose Internet Mail Extensions)
 - UTF-7
 - OpenPGP
 - URLs dentro de aplicaciones
 - Datos binarios transmitidos entre un cliente-servidor (como por ejemplo una web mediante HTTP).
 - Intercambio de datos con el servidor de autenticación LDAP.
 - Embeber archivos binarios en un archivo de texto ( de esta manera se evita que el binario se corrompa o de dependa de programas externos para procesarlo).
 - Compartir datos binarios de un porta papeles entre computadoras de una red (como la integración que da KDEConnect/GSConnect con un Linux).
 - Los códigos QR suelen almacenar la información binaria en esta codificación.
 - Embeber imágenes dentro de archivos markdown. Esta web y todas sus imágenes están hechas de esta forma.

Aunque otros como UTF-8 tiene cieras incompatibilidades debido a que son dos sistemas de codificación **diferentes y con objetivos de uso diferentes**.

Base64 no es el único que codifica-decodifica entre binario y texto, existen muchos como;

  • https://en.wikipedia.org/wiki/Binary-to-text_encoding

Codificador-Decodificador

Abreviado como ‘códec’ en español. Es el estándar utilizado que le indica a un software como debe interpretar un conjunto de bits (codificar) y como decodificarlos para su tratamiento (decodificar).

Se utilizan principalmente para multimedia;

  • JPEG (Joint Photographic Experts Group)

Es tanto un estándar de compresión como un codec para imágenes fijas.

Se utilizan funciones matemáticas por matrices para las funciones de codificación y decodificación.

  • PNG (Portable Network Graphics)

Es un formato gráfico, al igual que JPEG es de compresión pero sin pérdida de calidad y sin estar sujeto a patentes.

Tiene una firma digital en su archivo con un encabezado de 8 bytes;

Encabezado de archivo
89 50 4E 47 0D 0A 1A 0A
  • Audio digital

¿cómo se transforma un archivo de música de bits a sonido mediante pulsos eléctricos? Con la codificación digital de una señal eléctrica que es equivalenta a una onda sonora determinada.

Se utilizan codificaciones como el muestro (fijar la amplitud de la señal eléctrica a intervalos regulares de tiempo) y la cuantificación digital (una onda X representa un muestreo Y), a grandes rasgos y muy simplificado.

  • Codificación de la televisión digital

De como tratar las señales eléctricas surgen NTSC (EEUU), PAL (Europa), SECAM (Francia) que no eran compatibles entre ellos y su digitalización por componentes que sí permite compatibilidad entre todos.

  • MKV (Matroska Video)

Codec que funciona como contenedor de otros para video.

  • MP$ (MPEG-4 )

Codec que funciona como contenedor de otros para video.

  • VP8 / VP9

Desarrollado por Google para el internet actual para el procesamiento eficiente en HTML de videos. Pensado para ser integrado en archivos WebM.

  • Vorbis / Opus

Desarrollado por Google para el internet actual para el procesamiento eficiente en HTML de audio. Pensado para ser integrado en archivos WebM.

Codificacion vs Formato

En la red va a ver muchas veces referencias cruzadas o usos indiscriminados entre “formato” y “codificación”. Es importante que pueda entender finalmente que es cada uno;

Un sistema de codificación es un acuerdo mutuo entre partes de como se debe representar la información recibida para poder ser tratada. Un formato indica una estructura de datos en una cierta codificación que debe seguir un cierto orden y con determinadas características para que pueda ser procesado correctamente por un programa externo.

Herramientas útiles

  • gnu coreutils -> base64
  • https://www.rapidtables.com/convert/number/ascii-to-hex.html
  • https://www.utf8-chartable.de
  • xdd
  • ghex

Que usar dependiendo del escenario

Dicho todo lo anterior, siempre se debe seguir estas máximas;

  1. Si no se va a usar idiomas no latinos en el sistema operativo, se debe configurar su codificación visual como ASCII. Esto permite mayor velocidad de procesamiento y menor consumo de recursos.
  2. Si se requiere guardar imágenes se recomienda tenerlas en formato; png. Esto es debido a que, a diferencia de otros formatos, el png está dividido en segmentos y esto da la ventaja que si uno de ellos está corrupto no afecta a la totalidad de la imagen. Siendo así más resiliente a daños.
  3. Si se requiere guardar imágenes en forma de copias de seguridad, se recomienda hacerlo como BASE64 en texto plano. Esto es debido a que, al ser texto plano puro y duro, si se pierde o corrompe una parte de la información (las letras ASCII de salida) no se corrompe todo el archivo.
  4. Se recomienda que todas las aplicaciones transfieran sus datos utilizando ASCII y no UTF-8/16, debido a posibles incompatibilidades entre sí. Siempre y cuando se utilice intercambio de información en un idioma con alfabeto latino, incluso para mejor compatibilidad se puede usar ASCII para el traspaso de información codificándola en BASE64.