Cómo se usa
- Elige Codificar para crear un bloque uuencode, o Decodificar para recuperar los datos de uno.
- Deja activada la opción Líneas begin / end e introduce un Nombre de archivo si el resultado debe funcionar con el comando uudecode. Desactívala para obtener solo las líneas de datos.
- Escribe o pega la entrada, o abre un archivo para codificar sus bytes.
- Al decodificar, pega el bloque completo, con la línea begin si la hay, y después copia el resultado o descárgalo como archivo.
¿Qué es uuencode?
Uuencode, abreviatura de Unix-to-Unix encode, data de alrededor de 1980, cuando los archivos se copiaban entre máquinas Unix a través de enlaces UUCP que solo transportaban texto. Convierte cada 3 bytes en cuatro valores de 6 bits y suma 32 a cada uno, lo que da caracteres imprimibles que van del espacio al guion bajo. Como los sistemas de correo solían eliminar los espacios al final de las líneas, el valor cero se escribe como un acento grave (`) en lugar de un espacio, igual que hace esta herramienta.
Un archivo uuencode tiene una estructura fija:
- Una línea de encabezado
begin 644 name, donde 644 es el modo de archivo Unix en octal (el propietario puede leer y escribir, y el resto, solo leer) y name es el archivo que se va a crear. - Líneas de datos de hasta 45 bytes de entrada. Cada una empieza con un carácter de longitud (32 más el número de bytes, así que una línea completa empieza por
M) seguido de hasta 60 caracteres codificados. - Una línea con un solo acento grave, que indica cero bytes, y después la línea
end.
Con los caracteres de longitud y los saltos de línea, la salida ocupa aproximadamente un 38 % más que la entrada.
Uuencode en la actualidad
Antes de MIME, uuencode era la forma habitual de enviar programas e imágenes por correo electrónico y de publicarlos en Usenet. Base64 de MIME lo sustituyó durante los años noventa: uuencode no tenía forma de declarar un tipo de contenido, existían varias variantes incompatibles y algunos de sus signos de puntuación se alteraban en las pasarelas entre sistemas ASCII y EBCDIC, motivo por el que se creó xxencode.
Todavía se encuentran datos uuencode en archivos de correo y de grupos de noticias, en scripts de shell antiguos y en sistemas heredados. Para trabajos nuevos, usa Base64, o Archivo a Base64 para archivos completos.
Uuencode en la línea de comandos y en Python
# Shell (GNU sharutils): archivo de entrada y, después, el nombre para la línea begin
uuencode photo.jpg photo.jpg > photo.uu
uudecode photo.uu
# Python: una línea de hasta 45 bytes cada vez
import binascii
line = binascii.b2a_uu(b'hello', backtick=True)
binascii.a2b_uu(line) # b'hello'
El antiguo módulo uu de Python se eliminó en Python 3.13, pero las funciones de binascii siguen disponibles.
Especificación
| Alfabeto | ASCII 32 a 96 (del espacio a `) |
|---|---|
| Tamaño de salida | Aprox. 137%, incluidos los prefijos de línea |
| Relleno | Líneas de hasta 45 bytes |
| Estándar | POSIX uuencode |
| Distingue mayúsculas y minúsculas | Sí |
Ejemplos
| Entrada (UTF-8) | Salida |
|---|---|
Hello, World! | begin 644 data.bin
-2&5L;&\L(%=O<FQD(0``
`
end |
Base64.is | begin 644 data.bin
)0F%S938T+FES
`
end |
你好 | begin 644 data.bin
&Y+V@Y:6]
`
end |
Preguntas frecuentes
¿Por qué el texto uuencode contiene acentos graves?
El valor cero correspondería a un espacio, y los espacios al final de las líneas solían perderse por el camino. Muchos codificadores, incluido este, escriben un acento grave en su lugar. El decodificador acepta ambos.
¿Qué significa begin 644?
Marca el inicio del bloque codificado. 644 es el modo de permisos Unix del archivo restaurado (lectura y escritura para el propietario, solo lectura para el resto), y la palabra que sigue es el nombre del archivo que creará uudecode. Puedes indicar el nombre en las opciones.
¿Puedo decodificar uuencode sin la línea begin?
Sí. Si no hay línea begin, cada línea se decodifica como datos. Si la hay, la decodificación empieza después de ella y termina en la línea end, así que el texto que rodea el bloque, como el cuerpo de un correo, se omite. Los espacios finales que haya eliminado el software de correo se restauran automáticamente.
¿Uuencode es lo mismo que Base64?
No. Los dos convierten 3 bytes en 4 caracteres, pero uuencode usa otro rango de caracteres, un carácter de longitud en cada línea y líneas begin y end. La salida de Base64 no se puede decodificar como uuencode, ni al revés.