W3docs

convert_uudecode()

La función convert_uudecode() decodifica una cadena uuencoded. La sintaxis de convert_uudecode() es la siguiente:

La función convert_uudecode() decodifica una cadena uuencoded y la devuelve a sus datos binarios originales. Es el inverso exacto de convert_uuencode(): todo lo que produce convert_uuencode(), convert_uudecode() lo convierte de vuelta en los bytes con los que se comenzó.

Esta página cubre la sintaxis, un ejemplo completo de ida y vuelta, cómo se comporta con archivos, los errores comunes y cuándo conviene usarla en lugar de una alternativa moderna como Base64.

¿Qué es uuencode?

uuencode (codificación Unix-to-Unix) es un esquema antiguo para empaquetar datos binarios en caracteres ASCII imprimibles, de modo que puedan viajar de forma segura a través de canales solo de texto, como cuerpos de correo electrónico o registros de texto plano. Cada grupo de 3 bytes se asigna a 4 caracteres imprimibles, y el primer carácter de cada línea almacena la longitud de esa línea.

En PHP rara vez se producen datos uuencoded a mano. O bien se reciben de un sistema heredado, o bien se crean con convert_uuencode() y se decodifican después con convert_uudecode(). Tenga en cuenta que convert_uudecode() trabaja sobre el cuerpo codificado sin procesar — no requiere (ni elimina) el envoltorio clásico begin 644 ... / end que agrega la herramienta de línea de comandos uuencode.

Sintaxis

convert_uudecode(string $string): string|false

La función toma un parámetro, $string — los datos uuencoded a decodificar — y devuelve los datos decodificados. Retorna false si la entrada no es datos uuencoded válidos.

Ejemplo básico: ida y vuelta de una cadena

La forma más clara de ver convert_uudecode() en acción es codificar una cadena y luego decodificarla:

<?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;
?>

La salida de este código es:

Hello, World!

El valor decodificado es idéntico byte a byte a la cadena con la que empezamos. Este patrón de ida y vuelta es la forma confiable de usar la función: codificar con convert_uuencode(), almacenar o transmitir el texto codificado y luego decodificar con convert_uudecode() en el otro extremo.

Decodificación de un archivo uuencoded

Un caso real común es leer contenido uuencoded desde un archivo y escribir los bytes decodificados de vuelta:

<?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";
?>

Aquí file_get_contents() lee el texto codificado, convert_uudecode() lo decodifica y file_put_contents() guarda los bytes originales en un nuevo archivo. Verificar los valores de retorno protege contra un archivo faltante o una entrada corrupta.

Errores comunes

  • Se empareja con convert_uuencode(), no con la herramienta de shell uuencode. Los datos producidos por el comando uuencode independiente incluyen una cabecera begin 644 name y un pie de página end. Pasar ese envoltorio directamente a convert_uudecode() no devolverá los bytes originales — elimine primero la cabecera y el pie de página, o vuelva a codificar el cuerpo con convert_uuencode().
  • Una entrada no válida devuelve false. Compruebe siempre el resultado antes de usarlo, especialmente cuando los datos provienen de un archivo o de la red.
  • uuencode no es cifrado. Solo hace que los datos binarios sean imprimibles; no proporciona ninguna seguridad. Cualquiera puede decodificarlo.

Cuándo usarla (y cuándo no)

Use convert_uudecode() cuando deba interoperar con un sistema heredado que ya utiliza uuencode. Para código nuevo, prefiera Base64 (base64_encode() / base64_decode()): es el estándar moderno para incrustar de forma segura datos binarios en JSON, URI de datos y cabeceras HTTP, y está disponible en todas partes.

Funciones relacionadas

Práctica

Práctica
¿Qué hace la función 'convert_uudecode' en PHP?
¿Qué hace la función 'convert_uudecode' en PHP?
Was this page helpful?