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|falseLa 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 shelluuencode. Los datos producidos por el comandouuencodeindependiente incluyen una cabecerabegin 644 namey un pie de páginaend. Pasar ese envoltorio directamente aconvert_uudecode()no devolverá los bytes originales — elimine primero la cabecera y el pie de página, o vuelva a codificar el cuerpo conconvert_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
convert_uuencode()— la contraparte de codificación de esta función.base-convert()— convierte números entre bases numéricas.