Texto e código / Guias

Quoted-printable ou Base64 para texto de e-mail: o que muda?

Mensagens de e-mail podem transportar texto legível através de transportes com restrições de linha e caractere históricos. A codificação de transferência é uma camada desse trabalho.

Leia os rótulos MIME juntos

O cabeçalho Content-Type do corpo de uma mensagem pode declarar text/plain com um charset como UTF-8. Content-Transfer-Encoding pode então dizer quoted-printable ou base64. O primeiro rótulo diz ao leitor como os bytes são mapeados para caracteres; o segundo diz como esses bytes foram representados durante o transporte. Nenhum dos rótulos por si só descreve completamente o texto. Quoted-printable deixa muitos caracteres ASCII imprimíveis legíveis e escreve alguns outros bytes como um sinal de igual seguido por dois dígitos hexadecimais. Base64 em vez disso codifica grupos de bytes em um alfabeto restrito. Ambos são representações reversíveis, não segredo ou autenticação.

Siga um exemplo acentuado curto

Pegue o texto Café. Em UTF-8, o é final é codificado pelos bytes C3 A9. Uma representação quoted-printable desses bytes inclui =C3=A9, então uma frase curta, principalmente ASCII, pode permanecer visualmente reconhecível. A ferramenta incorporada mostra esse caminho com “Café e chá”. Uma renderização Base64 parece muito menos como a frase original, mesmo que decodificar seus bytes com UTF-8 reconstrua os mesmos caracteres. Compare os dois com seus decodificadores correspondentes e verifique a saída exata ao invés de assumir que cada sinal de igual significa a mesma coisa; Base64 também pode usar sinais de igual para preenchimento. Exemplo no conversor incorporado: entrada Café e chá; resultado Caf=C3=A9=20e=20ch=C3=A1.

Conjunto de caracteres e codificação de transferência são camadas separadas.
  1. Texto Café → bytes UTF-8 C3 A9 para é
  2. Quoted-printable representa é como =C3=A9
  3. Base64 usa uma representação imprimível diferente

A quebra de linha faz parte do contexto

O MIME quoted-printable tem regras para comprimento de linha, quebras de linha suaves e espaço em branco literal no final. Um sinal de igual no final de uma linha codificada pode sinalizar que a linha seguinte continua os mesmos dados. Base64 MIME também tem regras de comprimento de linha para corpos de mensagem. Um pequeno conversor de texto do navegador é útil para ver a representação de bytes, mas um remetente de e-mail de produção deve aplicar as regras MIME completas, definir cabeçalhos coerentes e evitar a recodificação acidental. Copiar um corpo codificado de transporte diretamente em uma página HTML exibirá os caracteres de codificação, não o texto pretendido. Decodifique na etapa de recebimento.

Quando cada representação é útil

Quoted-printable são muitas vezes convenientes quando o corpo é principalmente texto ASCII com ocasionais bytes não ASCII, porque um humano ainda pode inspecionar grandes partes dele. Base64 pode acomodar dados com muitos bytes fora do ASCII imprimível, embora sua saída seja mais longa e opaca para um leitor casual. O conteúdo e o protocolo de recepção decidem; não escolha uma codificação de transferência apenas porque uma saída de amostra parece mais curta. Também distinga cabeçalhos de e-mail do corpo: linhas de assunto codificadas usam sintaxe de cabeçalho adicional e não podem ser tratadas como um corpo codificado com quoted-printable.

Solucione problemas das camadas em ordem

Se um e-mail exibir “Caf=C3=A9”, primeiro verifique se a codificação de transferência foi decodificada. Se ele exibir símbolos de substituição após a decodificação, inspecione o charset declarado e os bytes reais. Se o texto codificado duplamente aparecer, identifique qual sistema o codificou duas vezes, em vez de executar um decodificador cegamente até que ele pareça correto. Retenha uma amostra original UTF-8, os rótulos MIME e ambos os exemplos codificados para um teste repetível. As ferramentas MultiVerto ilustram as transformações no texto inserido; elas não montam ou validam uma mensagem de email completa.

Testar o conversor

Codifique uma frase curta com acentos usando quoted-printable.

Quoted-Printable representa bytes UTF-8 com caracteres ASCII imprimíveis e escapes hexadecimais =HH, conforme a RFC 2045. A conversão é feita localmente no navegador.

Abrir o conversor completo

Mais guias

Guias de conversão

Explorar guias