W3docs

quoted_printable_encode()

Artículo sobre la función PHP quoted_printable_encode(), usada para codificar cadenas en formato quoted-printable según RFC 2045.

La función PHP quoted_printable_encode() codifica una cadena de 8 bits en una cadena quoted-printable, la codificación MIME definida en RFC 2045. Quoted-printable mantiene el texto ASCII imprimible legible mientras transmite de forma segura bytes que los sistemas de correo electrónico más antiguos de 7 bits podrían corromper — los bytes no imprimibles y no ASCII se escriben como =XX, donde XX es el valor del byte en hexadecimal en mayúsculas.

Esta página cubre la sintaxis, cómo funcionan las reglas de codificación, ejemplos ejecutables (incluyendo comportamiento con caracteres no ASCII y ajuste de líneas), casos de uso comunes y cómo revertir la operación.

Sintaxis

quoted_printable_encode(string $string): string
ParámetroDescripción
$stringLa cadena de 8 bits a codificar.

Valor de retorno: la versión codificada en quoted-printable de $string.

Cómo funciona la codificación

Tres reglas cubren casi todos los casos:

  • El ASCII imprimible se mantiene tal cual — letras, dígitos y la mayoría de los signos de puntuación pasan sin cambios, razón por la cual el texto quoted-printable sigue siendo mayormente legible.
  • Los demás bytes se convierten en =XX — cualquier byte fuera del rango seguro (caracteres de control, el propio =, y todo byte superior a 126, incluidos los bytes UTF-8 de caracteres acentuados o no latinos) se escribe como un signo igual seguido de dos dígitos hexadecimales.
  • Las líneas largas se ajustan suavemente — las líneas se mantienen en 76 caracteres o menos insertando un "salto de línea suave": un = al final seguido inmediatamente de una nueva línea. El decodificador lo elimina, por lo que no se pierde contenido real.

Ejemplo básico

php— editable, runs on the server

Salida:

Hello World!

Dado que 'Hello World!' es completamente ASCII imprimible, la salida es idéntica a la entrada — cada carácter cumple la primera regla.

Codificación de texto no ASCII

La codificación solo cambia visiblemente cuando la cadena contiene bytes que no son seguros para el transporte de 7 bits, como letras acentuadas o símbolos:

<?php
$string = 'Café costs £5';
echo quoted_printable_encode($string);
?>

Salida:

Caf=C3=A9 costs =C2=A35

Aquí é son los dos bytes UTF-8 0xC3 0xA9, codificados como =C3=A9, y £ es 0xC2 0xA3, codificado como =C2=A3. Los caracteres ASCII simples que los rodean no se modifican.

Saltos de línea suaves para líneas largas

Cuando una línea excedería los 76 caracteres, la función inserta un salto de línea suave (= más una nueva línea) para que la salida permanezca dentro de los límites de línea del correo electrónico:

<?php
$string = str_repeat('abcdefghij', 9) . 'END';
echo quoted_printable_encode($string);
?>

Salida:

abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcde=
fghijabcdefghijEND

El = al final antes de la nueva línea marca el salto; un decodificador quoted-printable reconstruye la línea única original.

Cuándo usarlo

Recurre a quoted_printable_encode() cuando construyes el cuerpo o las cabeceras de un correo electrónico a mano y necesitas una representación segura de 7 bits para contenido principalmente textual — por ejemplo, al configurar la parte Content-Transfer-Encoding: quoted-printable de un mensaje MIME. Es la elección correcta cuando los datos son predominantemente texto legible con caracteres especiales ocasionales; para datos binarios o con mucho contenido no textual, la codificación base64 es más compacta.

En la práctica, la mayoría de las bibliotecas modernas de correo (PHPMailer, Symfony Mailer) aplican esta codificación automáticamente, por lo que raramente se llama directamente — pero resulta invaluable para depurar o para scripts de bajo nivel que ensamblan mensajes en bruto.

Revertir la codificación

Usa quoted_printable_decode() para convertir una cadena quoted-printable de vuelta a los datos originales de 8 bits:

<?php
$encoded = quoted_printable_encode('Café costs £5');
echo quoted_printable_decode($encoded);
?>

Salida:

Café costs £5

Funciones relacionadas

Práctica

Práctica
¿Qué hace la función quoted_printable_encode() en PHP?
¿Qué hace la función quoted_printable_encode() en PHP?
Was this page helpful?