W3docs

convert_uudecode()

Die Funktion convert_uudecode() dekodiert einen uuencodierten string zurück in die ursprünglichen Binärdaten. Syntax und Beispiele.

Die Funktion convert_uudecode() dekodiert einen uuencodierten string zurück in die ursprünglichen Binärdaten. Sie ist das genaue Gegenteil von convert_uuencode(): Was convert_uuencode() erzeugt, wandelt convert_uudecode() wieder in die ursprünglichen Bytes zurück.

Diese Seite behandelt die Syntax, ein vollständiges Round-Trip-Beispiel, das Verhalten bei Dateien, häufige Fallstricke und wann man diese Funktion statt einer modernen Alternative wie Base64 verwenden sollte.

Was ist uuencode?

uuencode (Unix-to-Unix Encoding) ist ein altes Verfahren zum Verpacken von Binärdaten in druckbare ASCII-Zeichen, damit sie sicher über rein textbasierte Kanäle wie E-Mail-Bodies oder Nur-Text-Logs übertragen werden können. Je drei Bytes werden auf vier druckbare Zeichen abgebildet, und das erste Zeichen jeder Zeile speichert die Länge dieser Zeile.

In PHP werden uuencodierte Daten selten manuell erzeugt. Entweder empfängt man sie von einem Altsystem, oder man erstellt sie selbst mit convert_uuencode() und dekodiert sie später mit convert_uudecode(). Zu beachten ist, dass convert_uudecode() mit dem rohen kodierten Body arbeitet — es erfordert (oder entfernt) nicht den klassischen begin 644 ... / end-Wrapper, den das Kommandozeilenwerkzeug uuencode hinzufügt.

Syntax

convert_uudecode(string $string): string|false

Die Funktion nimmt einen Parameter entgegen, $string — die zu dekodierenden uuencodierten Daten — und gibt die dekodierten Daten zurück. Bei ungültigen uuencodierten Eingabedaten gibt sie false zurück.

Grundlegendes Beispiel: Round-Trip eines Strings

Am deutlichsten lässt sich convert_uudecode() verstehen, wenn man einen string kodiert und ihn wieder dekodiert:

<?php
$original = "Hello, World!";

// Encode the data first.
$encoded = convert_uuencode($original);

// Decode it back to the original bytes.
$decoded = convert_uudecode($encoded);

echo $decoded;
?>

Die Ausgabe dieses Codes lautet:

Hello, World!

Der dekodierte Wert ist byte-genau identisch mit dem string, mit dem wir begonnen haben. Dieses Round-Trip-Muster ist die zuverlässige Verwendungsweise der Funktion: mit convert_uuencode() kodieren, den kodierten Text speichern oder übertragen, und am anderen Ende mit convert_uudecode() dekodieren.

Dekodierung einer uuencodierten Datei

Ein häufiger Praxisfall ist das Lesen uuencodierter Inhalte aus einer Datei und das Zurückschreiben der dekodierten Bytes:

<?php
$encoded = file_get_contents("encoded_file.txt");

if ($encoded === false) {
    die("Could not read the encoded file.\n");
}

$decoded = convert_uudecode($encoded);

if ($decoded === false) {
    die("The file did not contain valid uuencoded data.\n");
}

file_put_contents("decoded_file.txt", $decoded);
echo "Decoded " . strlen($decoded) . " bytes.\n";
?>

Hier liest file_get_contents() den kodierten Text, convert_uudecode() dekodiert ihn, und file_put_contents() speichert die ursprünglichen Bytes in eine neue Datei. Die Überprüfung der Rückgabewerte schützt vor einer fehlenden Datei oder beschädigten Eingabe.

Fallstricke

  • Sie gehört zu convert_uuencode(), nicht zum Shell-Befehl uuencode. Daten, die mit dem eigenständigen Befehl uuencode erzeugt werden, enthalten einen begin 644 name-Header und einen end-Footer. Diesen Wrapper direkt an convert_uudecode() zu übergeben, liefert nicht die ursprünglichen Bytes zurück — der Header/Footer muss zuerst entfernt werden, oder der Body muss mit convert_uuencode() neu kodiert werden.
  • Ungültige Eingabe gibt false zurück. Das Ergebnis sollte immer geprüft werden, bevor es verwendet wird, insbesondere wenn die Daten aus einer Datei oder dem Netzwerk stammen.
  • uuencode ist keine Verschlüsselung. Es macht Binärdaten lediglich druckbar und bietet keinerlei Sicherheit. Jeder kann die Daten dekodieren.

Wann man es verwenden sollte (und wann nicht)

convert_uudecode() sollte verwendet werden, wenn die Interoperabilität mit einem Altsystem erforderlich ist, das bereits uuencode nutzt. Für neuen Code ist Base64 (base64_encode() / base64_decode()) vorzuziehen: Es ist der moderne Standard für die sichere Einbettung von Binärdaten in JSON, Daten-URIs und HTTP-Header und wird überall unterstützt.

Verwandte Funktionen

Übungen

Übung
Was macht die Funktion 'convert_uudecode' in PHP?
Was macht die Funktion 'convert_uudecode' in PHP?
Was this page helpful?