Uuencode und Uudecode

Kodieren Sie Text, Hex-Bytes oder Dateien im klassischen Unix-to-Unix-Format oder dekodieren Sie uuencodierte Blöcke aus alten E-Mails, Usenet-Archiven und Skripten zurück in die Originaldaten.

Läuft vollständig in Ihrem Browser. Es wird nichts hochgeladen.

Anleitung

  1. Wählen Sie „Kodieren“, um einen uuencodierten Block zu erstellen, oder „Dekodieren“, um die Daten aus einem solchen Block wiederherzustellen.
  2. Lassen Sie „begin-/end-Zeilen“ eingeschaltet und tragen Sie unter „Dateiname“ einen Namen ein, wenn das Ergebnis mit dem Befehl uudecode funktionieren soll. Schalten Sie die Option aus, um nur die Datenzeilen zu erhalten.
  3. Geben Sie Ihre Eingabe ein, fügen Sie sie ein oder öffnen Sie eine Datei, um deren Bytes zu kodieren.
  4. Fügen Sie beim Dekodieren den gesamten Block ein, einschließlich der begin-Zeile, falls vorhanden. Kopieren Sie dann das Ergebnis oder laden Sie es als Datei herunter.

Was ist Uuencode?

Uuencode, kurz für „Unix-to-Unix encode“, stammt aus der Zeit um 1980, als Dateien über UUCP-Verbindungen, die nur Text übertrugen, zwischen Unix-Rechnern kopiert wurden. Es wandelt je 3 Bytes in vier 6-Bit-Werte um und addiert zu jedem Wert 32. So entstehen druckbare Zeichen vom Leerzeichen bis zum Unterstrich. Da Mailsysteme Leerzeichen am Zeilenende häufig entfernten, wird der Wert null als Backtick (`) statt als Leerzeichen geschrieben, so auch in diesem Tool.

Eine uuencodierte Datei hat einen festen Aufbau:

  • Eine Kopfzeile begin 644 name, wobei 644 der Unix-Dateimodus in Oktalschreibweise ist (der Eigentümer darf lesen und schreiben, alle anderen dürfen lesen) und name die zu erstellende Datei angibt.
  • Datenzeilen mit bis zu 45 Eingabebytes. Jede beginnt mit einem Längenzeichen (32 plus die Anzahl der Bytes, eine volle Zeile beginnt also mit M), gefolgt von bis zu 60 kodierten Zeichen.
  • Eine Zeile mit einem einzelnen Backtick, der null Bytes bedeutet, und danach die Zeile end.

Mit den Längenzeichen und Zeilenumbrüchen ist die Ausgabe etwa 38 % größer als die Eingabe.

Uuencode heute

Vor MIME war Uuencode der übliche Weg, um Programme und Bilder per E-Mail zu versenden und im Usenet zu veröffentlichen. In den 1990er-Jahren wurde es durch MIME-Base64 abgelöst: Uuencode konnte keinen Inhaltstyp angeben, es gab mehrere inkompatible Varianten, und einige seiner Satzzeichen wurden von Gateways zwischen ASCII- und EBCDIC-Systemen verfälscht. Aus diesem Grund entstand Xxencode.

Uuencodierte Daten begegnen Ihnen noch in Mail- und News-Archiven, älteren Shell-Skripten und Altsystemen. Für neue Projekte verwenden Sie Base64 oder für ganze Dateien Datei zu Base64.

Uuencode auf der Kommandozeile und in Python

# Shell (GNU sharutils): Eingabedatei, dann der Name für die begin-Zeile
uuencode photo.jpg photo.jpg > photo.uu
uudecode photo.uu

# Python: jeweils eine Zeile mit bis zu 45 Bytes
import binascii
line = binascii.b2a_uu(b'hello', backtick=True)
binascii.a2b_uu(line)          # b'hello'

Das alte Modul uu wurde in Python 3.13 entfernt, die Funktionen in binascii sind jedoch weiterhin vorhanden.

Spezifikation

AlphabetASCII 32 bis 96 (Leerzeichen bis `)
AusgabegrößeEtwa 137 % inklusive Zeilenpräfixen
AuffüllungZeilen mit bis zu 45 Bytes
StandardPOSIX uuencode
Groß-/Kleinschreibung relevantJa

Beispiele

Eingabe (UTF-8)Ausgabe
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

Häufig gestellte Fragen

Warum enthält uuencodierter Text Backticks?

Der Wert null würde einem Leerzeichen entsprechen, und Leerzeichen am Zeilenende gingen bei der Übertragung oft verloren. Viele Encoder, auch dieser, schreiben stattdessen einen Backtick. Der Decoder akzeptiert beides.

Was bedeutet begin 644?

Damit beginnt der kodierte Block. 644 ist der Unix-Berechtigungsmodus der wiederhergestellten Datei (Lesen und Schreiben für den Eigentümer, Lesen für alle anderen), und das Wort danach ist der Dateiname, den uudecode anlegt. Den Namen können Sie in den Optionen unter „Dateiname“ festlegen.

Kann ich Uuencode ohne die begin-Zeile dekodieren?

Ja. Fehlt die begin-Zeile, wird jede Zeile als Daten dekodiert. Ist sie vorhanden, beginnt die Dekodierung danach und endet an der end-Zeile, sodass Text rund um den Block, etwa der Inhalt einer E-Mail, übersprungen wird. Von Mailprogrammen entfernte Leerzeichen am Zeilenende werden automatisch wiederhergestellt.

Ist Uuencode dasselbe wie Base64?

Nein. Beide wandeln 3 Bytes in 4 Zeichen um, aber Uuencode verwendet einen anderen Zeichenbereich, ein Längenzeichen in jeder Zeile sowie begin- und end-Zeilen. Base64-Ausgabe lässt sich nicht als Uuencode dekodieren und umgekehrt.