Enviar um arquivo
  1. base64hub
  2. Web e tokens
  3. Quoted-printable

Codificador e decodificador Quoted-Printable

Decodifique texto quoted-printable de e-mail, como Gr=C3=BC=C3=9Fe, de volta para Grüße, ou codifique texto do jeito que os programas de e-mail fazem: =XX para os bytes que precisam e quebras de linha suaves a cada 76 caracteres.

Grátis sem cadastro, sem limites Local nada é enviado Python idêntico byte a byte ao binascii.b2a_qp Atualizado 27 de out. de 2026
Entrada 0Bytes 0 BSaída 0

Processado no seu navegador. Esta página não consegue enviar seus dados para lugar nenhum – como sabemos

Como decodificar quoted-printable

  1. Clique em Quoted-printable → Texto acima da ferramenta para mudar para decodificação.
  2. Cole o texto codificado na entrada, por exemplo uma parte do corpo copiada do código-fonte de um e-mail.
  3. Leia o texto na saída. Se as letras acentuadas aparecerem erradas, ajuste o Charset abaixo da saída para o charset indicado no cabeçalho Content-Type da parte, como charset=iso-8859-1.
  4. Use Copiar saída ou Baixar. As quebras de linha suaves são unidas e cada =XX volta a ser o seu byte.

Para codificar, deixe a direção em Texto → Quoted-printable e digite ou cole o texto. O Charset abaixo da entrada define em quais bytes os caracteres não ASCII se transformam.

Como o quoted-printable funciona

O quoted-printable (RFC 2045, seção 6.7) mantém o texto legível onde dá e só escapa o que for necessário:

  • Caracteres ASCII imprimíveis ficam como estão, exceto o =.
  • Qualquer outro byte é escrito como = mais dois dígitos hex em maiúsculas. Em UTF-8, isso significa que cada caractere não ASCII vira de dois a quatro escapes.
  • O próprio = vira =3D.
  • Um espaço ou tab no fim da linha vira =20 ou =09.
  • As linhas têm no máximo 76 caracteres. As mais longas são divididas com uma quebra de linha suave: um = no fim da linha, que o decodificador remove.
TextoQuoted-printable
cafécaf=C3=A9
Grüße aus MünchenGr=C3=BC=C3=9Fe aus M=C3=BCnchen
100% = €5100% =3D =E2=82=AC5
<p style="color:red">Hi</p><p style=3D"color:red">Hi</p>
Caf=E9 decodificado como ISO-8859-1Café

Na última linha, =E9 é um único byte: é em ISO-8859-1 e Windows-1252 e, sozinho, inválido em UTF-8, então o resultado depende do charset usado na decodificação.

Modo texto e modo binário

Por padrão, o codificador trata a entrada como texto. Quebras de linha continuam sendo quebras de linha reais e, como no binascii.b2a_qp do Python, se a primeira linha terminar em CRLF, um LF solto mais adiante também vira CRLF. Isso é o certo para texto de e-mail, mas altera os bytes.

Marque Codificar quebras de linha (binário) quando os bytes exatos importarem. As quebras de linha passam a ser escritas como =0D e =0A, então Hello, CRLF, World vira Hello=0D=0AWorld, e a decodificação devolve exatamente o que entrou. Para dados realmente binários, como imagens, Base64 é a melhor escolha de qualquer forma.

Quoted-printable ou Base64 no e-mail

O programa de e-mail escolhe o Content-Transfer-Encoding para cada parte MIME. O quoted-printable serve para texto majoritariamente ASCII, porque continua legível e cresce pouco. O Base64 tem um acréscimo fixo de cerca de 33% e ganha quando a maioria dos bytes precisa de escape:

TextoBytes em UTF-8Quoted-printableBase64
Grüße aus München2032 caracteres28 caracteres
Привет, мир (russo)2056 caracteres28 caracteres

Mesmo um texto em alemão com três letras não ASCII em 17 caracteres já fica maior em quoted-printable do que em Base64; em cirílico, chega ao dobro do tamanho do Base64. Para gerar a forma Base64 com as linhas de 76 caracteres que o e-mail exige, use o codificador Base64 MIME. Base64 no e-mail explica como as duas codificações aparecem em uma mensagem, incluindo anexos e cabeçalhos codificados.

Lendo um e-mail inteiro

Copiar uma parte do corpo de uma mensagem bruta funciona para uma olhada rápida. Para um arquivo .eml completo, o decodificador de EML interpreta os cabeçalhos, decodifica as partes em quoted-printable e Base64 com os charsets declarados e lista os anexos para download. O quoted-printable também aparece fora do e-mail, por exemplo em arquivos vCard 2.1 com ENCODING=QUOTED-PRINTABLE; cole aqui o valor que vem depois dos dois-pontos.

Quoted-printable no código

import quopri
quopri.encodestring("café".encode("utf-8"))            # b'caf=C3=A9'
quopri.decodestring(b"caf=C3=A9 =3D 5=E2=82=AC").decode("utf-8")   # 'café = 5€'

O pacote email do Python aplica a decodificação certa automaticamente: msg.get_payload(decode=True) retorna os bytes decodificados de uma parte, seja qual for a codificação de transferência. A página de Python cobre o lado do Base64.

Perguntas frequentes

O que significa =3D em um e-mail?

É um sinal de igual codificado. No quoted-printable o = inicia um escape, então um = literal precisa ser escrito como =3D, o valor do byte em hex. Isso aparece muito em e-mails HTML, como em style=3D"color:red".

Por que as linhas no código-fonte do e-mail terminam com =?

É uma quebra de linha suave. Linhas quoted-printable podem ter no máximo 76 caracteres, então as mais longas são divididas e cada quebra é marcada com um = no final. O decodificador junta os pedaços de novo em uma linha só.

O que significa =20 no fim de uma linha?

Um espaço codificado. Servidores de e-mail podem remover espaços no fim da linha, por isso o quoted-printable protege um espaço ou tab no final escrevendo =20 ou =09.

Como decodificar quoted-printable em Python?

quopri.decodestring(data) ou binascii.a2b_qp(data) retornam bytes; depois chame .decode("utf-8") ou o charset indicado no cabeçalho Content-Type.

Dá para decodificar assuntos no formato =?UTF-8?Q?...?=?

Não nesta página. Esses são encoded words do RFC 2047, que usam uma codificação Q parecida, com _ no lugar do espaço. O decodificador de EML decodifica esses cabeçalhos, junto com corpos em quoted-printable.