Codificador Q de cabeçalhos
Coloque acentos no assunto ou no nome do remetente de um e-mail sem quebrar nada: Hello café vira =?UTF-8?Q?Hello_caf=C3=A9?=, e uma palavra codificada colada volta a ser texto legível. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Texto
- Hello café
- Modo de cálculo
- Encode
- Resultado
- =?UTF-8?Q?Hello_caf=C3=A9?=
- Codificação
- rfc2047-q
- Conjunto de caracteres
- UTF-8
- Forma
- Encoded word
Este codificador Q de cabeçalhos converte texto UTF-8 simples na forma Q do RFC 2047 usada dentro de encoded-words MIME para cabeçalhos de e-mail não ASCII, e decodifica essas cadeias de volta a texto legível. charset? Q? …? Verificações comuns incluem codificar Hello café para =? UTF-8? Q? Hello_caf=C3=A9? = e decodificar essa cadeia de volta à frase original.
O que é a codificação Q do RFC 2047 e o que esta ferramenta devolve
O RFC 2047 define encoded-words para que cabeçalhos de e-mail que historicamente esperavam sobretudo ASCII ainda possam carregar texto internacional sem quebrar as regras de caminho SMTP. O método Q mantém a maior parte do texto latino legível em um terminal simples: ASCII imprimível seguro aparece como ele mesmo, o espaço é preferencialmente escrito como sublinhado, e qualquer outro octeto vira um sinal de igual seguido de dois dígitos hexadecimais em maiúsculas.
O sinal de igual, o ponto de interrogação e o sublinhado devem ser escapados quando aparecem como dados, porque são estruturais na gramática da encoded-word. Quebras de linha suaves do quoted-printable de corpo não se aplicam aqui: uma encoded-word é um token atômico e não deve conter uma sequência de quebra suave. Se você precisa de empacotamento binário opaco em cabeçalhos, prefira o método B ou um auxiliar Base64; esta landing é para o caminho Q legível que assuntos e nomes de exibição ainda usam todos os dias.
Onde a codificação Q aparece nos cabeçalhos de e-mail
Desenvolvedores encontram a codificação Q do RFC 2047 ao inspecionar linhas Subject que começam com igual-interrogação UTF-8 interrogação Q, ao criar nomes de exibição internacionais para cabeçalhos From e To, ou ao depurar por que um acento de café virou sublinhado e pares igual-hex em um dump de mensagem bruta. Equipes de frontend e suporte decodificam trechos Q durante a investigação de tickets sem colar dados em scripts ad hoc que tratam mal o sublinhado no lugar do espaço ou confundem quoted-printable de corpo com regras Q de cabeçalho.
Serviços backend codificam amostras de configuração ou strings multilíngues curtas antes de colocá-las em campos de cabeçalho onde transporte de 8 bits sem restrições não é garantido. Engenheiros de qualidade geram pares determinísticos de encode e decode para testes de contrato, para que uma biblioteca de correio que afirme suportar RFC 2047 não possa mudar em silêncio o casing hex, deixar espaços sem escape ou aceitar sequências igual quebradas.
Educadores usam a mesma ferramenta ao ensinar a diferença entre quebras suaves do quoted-printable de corpo e átomos Q de cabeçalho que devem permanecer em um único token. Combine com auxiliares MIME quoted-printable quando estiver trabalhando em corpos e não em cabeçalhos, e com auxiliares Base64 quando uma encoded-word B for a escolha certa para dados densos de cabeçalho com aparência binária.
Casos de uso
Depuração de Subject e nome de exibição
Codifique ou decodifique fragmentos Subject e From de nome de exibição em Q do RFC 2047 para que acentos e espaços coincidam com o que os clientes de e-mail mostram.
Preparação de cabeçalhos em gateways legados
Transforme texto UTF-8 simples em tokens de cabeçalho codificados em Q seguros para o transporte antes de enviar por caminhos de correio de 7 bits restritos.
Perguntas frequentes
Como a codificação Q de cabeçalho difere do quoted-printable de corpo?
A codificação Q de cabeçalho (RFC 2047) mapeia o espaço para sublinhado, proíbe quebras de linha suaves dentro de uma encoded-word e trata =, ? e _ como especiais.
Por que os espaços aparecem como sublinhados?
Porque a palavra codificada precisa ser um bloco único, sem espaços, dentro do cabeçalho; por isso o método Q escreve cada espaço como sublinhado. Na decodificação, cada sublinhado volta a ser espaço, e um sublinhado real do texto é escapado.
O que quer dizer o =?UTF-8?Q? no começo?
É o envelope da palavra codificada: primeiro o conjunto de caracteres, depois a letra Q do método e então o texto codificado, fechado por ?=. A ferramenta acrescenta esse envelope ao codificar, a menos que você peça só o conteúdo.
Quais caracteres precisam ser escapados na codificação Q?
O sinal de igual, o ponto de interrogação e o sublinhado, quando fazem parte do texto, porque têm função na estrutura da palavra codificada. Qualquer outro byte inseguro vira um sinal de igual com dois dígitos hexadecimais maiúsculos.
O que acontece se a sequência de escape estiver incompleta?
A ferramenta recusa o texto em vez de adivinhar. Um sinal de igual sem dois dígitos hexadecimais válidos logo depois indica uma cópia cortada ou alterada, e é melhor corrigir a origem do que receber um resultado errado.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/enc/quoted-printable-q \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello café"}'const res = await fetch("https://api.kit.forhosting.com/enc/quoted-printable-q", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello café"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/quoted-printable-q",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello café"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/quoted-printable-q", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello café"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello café"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/quoted-printable-q", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "Hello café"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.quoted_printable_q",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Diferente do quoted-printable do corpo, a codificação Q de cabeçalho mapeia cada espaço para um sublinhado, proíbe quebras de linha suaves dentro de uma encoded-word e reserva o ponto de interrogação e o sublinhado para que os analisadores de correio nunca confundan o payload com o quadro =? O motor é totalmente determinístico: a mesma entrada, mode, charset e form sempre produzem o mesmo resultado, sem chamadas de rede, sais aleatórios nem atalhos dependentes da data. Use grátis no navegador para depurar e-mail e praticar cabeçalhos, ou chame a API a US$ 0,002 por solicitação bem-sucedida quando pipelines precisarem de transformações RFC 2047 reproduzíveis em CI e serviços backend.
O que é a codificação Q do RFC 2047 e o que esta ferramenta devolve
Uma encoded-word tem a forma igual-interrogação charset interrogação encoding interrogação payload interrogação-igual, em que a letra de encoding é Q para o método semelhante a quoted-printable ou B para Base64. Esta página segue sempre esse contrato para texto UTF-8 por padrão: o mode encode mapeia sua string para bytes do charset, emite sublinhado para espaço e igual-hex para bytes inseguros e, opcionalmente, envolve o payload como encoded-word completa; o mode decode aceita uma encoded-word completa ou um payload Q nu, expande sublinhado e pares igual-hex, e rejeita sequências incompletas ou não hexadecimais em vez de adivinhar. A resposta JSON inclui result para a string transformada, mode ecoando encode ou decode, encoding fixo em rfc2047-q, charset, form (encoded_word ou payload), o campo payload nu para asserções fáceis, e input_bytes mais output_bytes para fixar tamanhos em testes. Não há caminho de streaming nem reparo silencioso de texto Q quebrado: ou a string é válida ou a solicitação falha com invalid_input.
Como text, mode, charset e form são lidos e como os resultados permanecem reproduzíveis
charset? Q? …? Encode aceita strings Unicode, converte-as com as regras do charset escolhido e emite tokens Q com escapes hexadecimais em maiúsculas e sublinhado para cada espaço. Depois que os bytes são recuperados, uma decodificação UTF-8 fatal garante que lixo binário não vire mojibake quando o charset é UTF-8. O campo de payload preferido é text, com aliases input, value e s, para que formulários, query strings e clientes SDK reutilizem o mesmo contrato sem renomear colunas. Mode tem padrão encode e aceita decode de forma explícita; os aliases op, direction e action mapeiam para o mesmo comutador em scripts que já usam esses nomes. Charset tem padrão UTF-8 e é escrito na encoded-word no encode; ao decodificar uma encoded-word completa o charset é tomado do próprio token, e ao decodificar um payload nu o parâmetro charset escolhe como os bytes recuperados viram texto. Form tem padrão encoded_word para que encode devolva uma string completa =? = pronta para um fragmento Subject ou From de nome de exibição; defina form como payload quando você só quiser o corpo Q interno para testes unitários ou para compor cabeçalhos multi-segmento por conta própria. Decode exige uma string Q bem formada: um igual sozinho no fim da entrada, um igual seguido de um único caractere, ou um igual seguido de dígitos não hexadecimais falham com uma mensagem invalid_input clara nomeando o escape malformado. Combine a execução gratuita do navegador nesta página com a API paga quando precisar do resultado matemático idêntico dentro de um pipeline automatizado sem reimplementar as tabelas RFC 2047 por conta própria. Entradas inválidas devolvem invalid_input e não são cobradas, o que mantém a validação barata enquanto transformações bem-sucedidas seguem um preço fixo por item de US$ 0,002.
Onde a codificação Q se encaixa em cabeçalhos de e-mail, MIME e fixtures de teste
Nesta página o trabalho roda inteiramente no seu navegador; pela API cada consulta bem-sucedida custa US$ 0,002, validação falha não é cobrada e nada é armazenado após a resposta. Essa divisão — exploração interativa gratuita e uma API de preço com resultado idêntico — combina com o restante do catálogo KIT tier A e permite passar de uma demo de sala de aula a um pipeline automatizado sem mudar o resultado codificado.
Casos de integração
Geração de fixtures de cabeçalho de e-mail
Produza encoded-words reproduzíveis para testes unitários, arquivos golden e checagens de integração SMTP ou IMAP que afirmem a forma do cabeçalho.
Perguntas técnicas
Quanto custa o codificador Q de cabeçalhos?
É grátis no seu navegador nesta página. Pela API uma solicitação bem-sucedida custa US$ 0,002; entradas inválidas não são cobradas.
Quais modes e forms são suportados?
mode=encode (padrão) transforma texto simples em codificação Q; mode=decode transforma uma string Q de volta em texto. form=encoded_word (padrão no encode) envolve como =?charset?Q?payload?=; form=payload devolve só o corpo Q interno.
O que acontece se uma sequência de escape estiver malformada?
Decode falha com invalid_input. =XX incompleto, dígitos não hexadecimais após = ou caracteres ilegais em um payload Q são rejeitados em vez de adivinhados.
O resultado é determinístico?
Sim. O mesmo text, mode, charset e form sempre produzem o mesmo resultado, sem rede, aleatoriedade ou comportamento dependente da data.