Uuencode e uudecode

Codifica testo, byte esadecimali o file nel classico formato Unix-to-Unix, oppure riporta ai dati originali i blocchi uuencode di vecchie email, archivi Usenet e script.

Funziona interamente nel tuo browser. Non viene caricato nulla.

Come si usa

  1. Scegli Codifica per creare un blocco uuencode, oppure Decodifica per recuperarne i dati.
  2. Lascia attiva l’opzione Righe begin / end e inserisci un Nome file se il risultato deve funzionare con il comando uudecode. Disattivala per ottenere solo le righe di dati.
  3. Digita o incolla l’input, oppure apri un file per codificarne i byte.
  4. In decodifica, incolla l’intero blocco, compresa l’eventuale riga begin, poi copia il risultato o scaricalo come file.

Che cos’è uuencode?

Uuencode, abbreviazione di Unix-to-Unix encode, risale al 1980 circa, quando i file venivano copiati tra macchine Unix tramite collegamenti UUCP che trasportavano solo testo. Trasforma ogni gruppo di 3 byte in quattro valori a 6 bit e aggiunge 32 a ciascuno, ottenendo caratteri stampabili dallo spazio al trattino basso. Poiché i sistemi di posta spesso eliminavano gli spazi finali, il valore zero viene scritto come accento grave (`) anziché come spazio, come fa questo strumento.

Un file uuencode ha una struttura fissa:

  • Una riga di intestazione begin 644 name, dove 644 è il modo del file Unix in ottale (il proprietario può leggere e scrivere, tutti gli altri solo leggere) e name è il file da creare.
  • Righe di dati con al massimo 45 byte di input. Ognuna inizia con un carattere di lunghezza (32 più il numero di byte, quindi una riga completa inizia con M) seguito da un massimo di 60 caratteri codificati.
  • Una riga con un solo accento grave, che indica zero byte, e poi la riga end.

Contando i caratteri di lunghezza e le interruzioni di riga, l’output è circa il 38% più grande dell’input.

Uuencode oggi

Prima di MIME, uuencode era il modo abituale per inviare programmi e immagini via email e per pubblicarli su Usenet. Negli anni ’90 è stato sostituito dal Base64 di MIME: uuencode non permetteva di dichiarare il tipo di contenuto, ne esistevano diverse varianti incompatibili e alcuni dei suoi segni di punteggiatura venivano alterati dai gateway tra sistemi ASCII ed EBCDIC, motivo per cui è nato xxencode.

Si incontrano ancora dati uuencode negli archivi di posta e di news, in vecchi script di shell e nei sistemi legacy. Per i nuovi progetti usa Base64, oppure File in Base64 per file interi.

Uuencode dalla riga di comando e in Python

# Shell (GNU sharutils): file di input, poi il nome per la riga begin
uuencode photo.jpg photo.jpg > photo.uu
uudecode photo.uu

# Python: una riga di massimo 45 byte alla volta
import binascii
line = binascii.b2a_uu(b'hello', backtick=True)
binascii.a2b_uu(line)          # b'hello'

Il vecchio modulo uu di Python è stato rimosso in Python 3.13, ma le funzioni di binascii sono ancora disponibili.

Specifiche

AlfabetoDa ASCII 32 a 96 (dallo spazio a `)
Dimensione dell’outputCirca 137% inclusi i prefissi di riga
PaddingRighe fino a 45 byte
StandardPOSIX uuencode
Distingue maiuscole/minuscoleSì

Esempi

Input (UTF-8)Output
Hello, World!begin 644 data.bin -2&5L;&\L(%=O<FQD(0`` ` end
Base64.isbegin 644 data.bin )0F%S938T+FES ` end
你好begin 644 data.bin &Y+V@Y:6] ` end

Domande frequenti

Perché il testo uuencode contiene accenti gravi?

Il valore zero corrisponderebbe a uno spazio, e gli spazi a fine riga andavano spesso persi durante il trasferimento. Molti codificatori, compreso questo, scrivono invece un accento grave. Il decodificatore accetta entrambi.

Che cosa significa begin 644?

Segna l’inizio del blocco codificato. 644 è il modo dei permessi Unix del file ripristinato (lettura e scrittura per il proprietario, sola lettura per tutti gli altri), e la parola che segue è il nome del file che uudecode creerà. Puoi impostare il nome nelle opzioni.

Posso decodificare uuencode senza la riga begin?

Sì. Se manca la riga begin, ogni riga viene decodificata come dati. Se c’è, la decodifica inizia dopo di essa e si ferma alla riga end, quindi il testo intorno al blocco, come il corpo di un’email, viene saltato. Gli spazi finali rimossi dai programmi di posta vengono ripristinati automaticamente.

Uuencode è la stessa cosa di Base64?

No. Entrambi trasformano 3 byte in 4 caratteri, ma uuencode usa un intervallo di caratteri diverso, un carattere di lunghezza su ogni riga e le righe begin ed end. Un output Base64 non può essere decodificato come uuencode, né viceversa.