robot de la enciclopedia para niños

UTF-7 para niños

Enciclopedia para niños

UTF-7 (Formato de Transformación Unicode de 7 bits) es una forma especial de codificar texto. Fue creada para enviar información de Unicode usando solo caracteres ASCII. Esto era útil, por ejemplo, en los mensajes de correo electrónico de Internet.

Aunque se llama UTF-7, no es un formato oficial del estándar Unicode. El sistema básico para enviar correos electrónicos, llamado SMTP, solo permite caracteres ASCII. Esto significa que no se pueden usar todos los tipos de caracteres directamente.

MIME ayuda a especificar qué tipo de caracteres se usan, como UTF-8 o UTF-16. Sin embargo, la forma en que se transmiten los correos a veces no soporta todos los caracteres. Por eso, a veces es necesario "codificar" el contenido para que pueda viajar sin problemas.

UTF-7 permite enviar texto en un correo electrónico sin usar una codificación extra de MIME. Aun así, es importante indicar qué tipo de caracteres se están usando. Si UTF-7 se usa en el "Asunto" de un correo, debe ir dentro de una "palabra codificada" de MIME. UTF-7 está diseñado para no usar el símbolo "=" como un carácter especial. Esto evita problemas si se combina con otros sistemas de codificación.

Generalmente, UTF-7 no se usa mucho dentro de los programas. Esto se debe a que es un poco complicado de manejar. También se creó un sistema llamado 8BITMIME para un propósito similar. Este sistema reduce la necesidad de codificar mensajes a un formato de 7 bits. Aunque UTF-7 puede ser más pequeño que otras combinaciones, no se recomienda su uso.

Una versión modificada de UTF-7 se usa en el protocolo IMAP. Este protocolo sirve para recibir mensajes de correo electrónico.

¿Qué es UTF-7 y cómo funciona?

UTF-7 fue propuesto como un sistema experimental en un documento llamado RFC 1642. Este documento se actualizó más tarde con el RFC 2152. Es importante saber que el RFC 2152 no es un estándar oficial de Internet. A pesar de esto, la organización IANA lo menciona como una definición de UTF-7. UTF-7 tampoco es un estándar de Unicode. Los estándares oficiales de Unicode son UTF-8, UTF-16 y UTF-32.

Caracteres directos y opcionales

Algunos caracteres se pueden representar directamente con un solo byte ASCII. Estos se llaman "caracteres directos". Incluyen las 62 letras y números, y 9 símbolos como `' , - . / : ?`. Estos caracteres son muy seguros para usar tal cual.

Hay otro grupo llamado "caracteres directos opcionales". Estos son otros caracteres que se pueden imprimir. Usar estos caracteres opcionales puede hacer que el texto sea más fácil de leer. También puede reducir el tamaño del archivo. Sin embargo, a veces pueden causar problemas si los sistemas de correo no están bien configurados.

Los caracteres como el espacio, la tabulación, el retorno de carro y la nueva línea también se pueden usar directamente. Pero si el texto va en un correo electrónico, hay que tener cuidado. Deben usarse de forma que no necesiten una codificación extra.

Cómo se codifican otros caracteres

Otros caracteres deben codificarse de una manera especial. Primero se convierten a UTF-16 y luego a un formato llamado base64 modificado. Para indicar que un bloque de texto está codificado así, se usa el símbolo `+` al principio. El final del bloque se marca con cualquier carácter que no sea parte del base64 modificado. Si el carácter después del bloque es un `-`, este se "consume" (se usa para marcar el final). Si quieres escribir el símbolo `+` literalmente, puedes codificarlo como `+-`.

Ejemplos de codificación UTF-7

Aquí tienes algunos ejemplos de cómo se vería el texto codificado con UTF-7:

  • "Hola Mundo!" se codifica como "Hola Mundo!" (no cambia porque solo tiene caracteres directos).
  • "1 + 1 = 2" se codifica como "1 +- 1 +AD0 2". El símbolo `+` se convierte en `+-` y el `=` se codifica.
  • "£1" se codifica como "+AKM-1". El símbolo de libra (£) es un carácter especial que necesita ser codificado.
Dígito Hexadecimal 0 0 A 3  
Patrón de Bit 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0
Índice 0 10 12
Base64 A K M

Cómo codificar y decodificar UTF-7

Codificar texto

Para codificar, primero hay que decidir qué caracteres se pueden dejar como ASCII y cuáles necesitan ser convertidos a bloques Unicode. Un programa simple puede codificar directamente los caracteres que son seguros. Sin embargo, codificar un solo carácter Unicode puede ocupar más espacio que si fuera parte de una secuencia Unicode más larga.

Una vez que se decide qué secuencias Unicode se van a usar, se codifican y se les añaden los símbolos de inicio y fin.

Usemos el ejemplo de los caracteres £† (0x00A3 y 0x2020):

  1. Convierte los números Unicode (UTF-16) a binario: 0x00A3 → 0000 0000 1010 0011 0x2020 → 0010 0000 0010 0000
  2. Une las secuencias binarias: 0000 0000 1010 0011 0010 0000 0010 0000
  3. Agrupa los bits en grupos de seis, empezando por la izquierda: 000000 001010 001100 100000 001000 00
  4. Si el último grupo tiene menos de seis bits, añade ceros al final: 000000 001010 001100 100000 001000 000000
  5. Reemplaza cada grupo de seis bits por su código Base64: 000000 001010 001100 100000 001000 000000 → AKMgIA

Decodificar texto

Para decodificar, primero separamos el mensaje en texto ASCII normal y bloques Unicode. Luego, los bloques Unicode se decodifican. Usemos el resultado del ejemplo anterior:

  1. Convierte cada código Base64 a su secuencia de bits:

AKMgIA → 000000 001010 001100 100000 001000 000000

  1. Agrupa los bits en grupos de 16, empezando por la izquierda:

000000 001010 001100 → 0000000010100011 0010000000100000 0000

  1. Si queda algún grupo incompleto al final, se ignora. Si tiene más de cuatro bits o contiene un "uno", el código es incorrecto.

0000000010100011 0010000000100000

  1. Cada grupo de 16 bits es un número de carácter Unicode (UTF-16).

0000 0000 1010 0011 ≡ 0x00A3 ≡ 16310

Seguridad de UTF-7

UTF-7 permite que el mismo texto se represente de muchas maneras diferentes. Esto se logra cambiando varias veces entre el modo base64. Hoy en día, los sistemas de correo modernos pueden manejar UTF-8. Por eso, UTF-7 ya no es tan necesario como antes. Los programas actuales deberían usar otras formas de codificación que sean más seguras.

Otros formatos: UTF-6 y UTF-5

Se han propuesto ideas para UTF-6 y UTF-5, especialmente para sistemas de radiotelegrafía. Sin embargo, hasta 2006, no se había creado un estándar oficial para ellos. Estas propuestas no están relacionadas con Punycode.

Véase también

Kids robot.svg En inglés: Unicode Facts for Kids

kids search engine
UTF-7 para Niños. Enciclopedia Kiddle.