Codificador UTF-7 modificado IMAP
Obtenha o nome exato de pasta que um servidor IMAP espera: Inbox/日本語 vira Inbox/&ZeVnLIqe-, e um nome enigmático de um log volta a ficar legível. Nomes só em inglês não mudam. 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
- Inbox/日本語
- Modo de cálculo
- Encode
- Resultado
- Inbox/&ZeVnLIqe-
- Codificação
- modified_utf7_imap
- Comprimento da entrada
- 9
- Comprimento da saída
- 16
Os nomes de caixa de correio IMAP no fio usam um dialeto de UTF-7 chamado UTF-7 modificado (RFC 3501 seção 5.1.3). Caracteres US-ASCII imprimíveis, exceto o e comercial, mantêm a forma comum; um e comercial isolado vira a sequência de dois caracteres e comercial-hífen; e qualquer outro caractere—acentos, CJK, emoji e códigos de controle—é empacotado como UTF-16BE dentro de uma seção Base64 modificada que começa com e comercial e termina com hífen, com a barra substituída por vírgula. Esta ferramenta codifica um nome de pasta Unicode legível nessa string de fio ou decodifica uma resposta LIST/SELECT de volta a texto legível.
O que é o UTF-7 modificado do IMAP e o que este conversor devolve
Protocolos de caixa padrão ainda trocam nomes de pasta como strings seguras de 7 bits mesmo quando usuários criam rótulos em japonês, espanhol, árabe ou com emoji. O IMAP resolveu isso com UTF-7 modificado em vez de UTF-8 bruto em cada caminho do servidor: o nome permanece em grande parte legível quando é só inglês, enquanto segmentos internacionais viram blocos compactos envolvidos por e comercial. As regras de codificação são rígidas.
Caracteres no intervalo espaço até til, exceto o e comercial, são escritos sem alteração. O e comercial nunca fica solto; sempre se escreve como e comercial seguido de hífen para que analisadores tratem o bloco Base64 seguinte como um deslocamento deliberado. Qualquer caractere fora desse conjunto direto é reunido em uma sequência, convertido em unidades de código UTF-16 big-endian e então codificado em Base64 com o alfabeto clássico, exceto que o sexagésimo quarto símbolo é vírgula em vez de barra, e sinais de igual de preenchimento são omitidos.
O modo encode devolve essa string de fio mais o modo resolvido, um rótulo de codificação fixo e os comprimentos de entrada e saída. O modo decode inverte o caminho: copia ASCII direto, expande e comercial-hífen a um único e comercial e transforma cada seção e comercial-carga-hífen de volta em Unicode.
Onde a codificação de nomes de caixa se encaixa em clientes, servidores e testes
Autores de clientes encontram UTF-7 modificado ao implementar CREATE, RENAME, LIST ou LSUB e precisam que o nome no fio corresponda ao que Dovecot, Cyrus, Exchange ou Gmail esperam para pastas internacionais. Engenheiros de suporte colam um token de pasta críptico de um log de protocolo e precisam do rótulo humano sem abrir um cliente desktop. Serviços de backend normalizam títulos de pasta voltados ao usuário antes de armazená-los em um proxy IMAP ou de comparar alvos SELECT em testes de integração.
Engenheiros de qualidade geram pares encode e decode para testes de contrato de modo que uma atualização de biblioteca não possa mudar em silêncio vírgula versus barra no Base64 nem omitir o escape do e comercial. Educadores usam a mesma página ao ensinar a diferença entre extensões de caixa UTF-8, UTF-7 modificado legado e nomes de exibição que nunca chegam ao fio. Combine com outros codificadores gratuitos do catálogo ao montar um pequeno laboratório de ferramentas de texto determinísticas para e-mail e trabalho MIME.
Casos de uso
Depuração de clientes e servidores IMAP
Codifique nomes de pasta Unicode para CREATE ou SELECT, ou decodifique respostas LIST com segmentos UTF-7 modificado envolvidos por e comercial.
Tradução de logs de suporte
Transforme tokens de caixa crípticos do fio em traços de protocolo de volta em rótulos Unicode legíveis sem um cliente de e-mail completo.
Perguntas frequentes
Em que o UTF-7 modificado do IMAP difere do UTF-7 comum?
O IMAP usa e comercial como caractere de deslocamento em vez de mais, e o alfabeto Base64 usa vírgula em vez de barra. O e comercial se escreve como e comercial-hífen. Sinais de igual de preenchimento são omitidos.
O que o modo encode devolve para ASCII puro?
A mesma string ASCII imprimível, porque caracteres US-ASCII diretos, exceto o e comercial, representam a si mesmos. Só caracteres não diretos e e comerciais soltos são reescritos.
Como um e comercial literal é codificado?
Como a sequência de dois caracteres e comercial-hífen (&-). Isso mantém a análise do deslocamento inequívoca quando uma seção Base64 real segue mais adiante no nome.
Como leio um nome de pasta como Inbox/&ZeVnLIqe- de um log?
Escolha decodificar e cole o nome como ele aparece. Cada trecho entre um e comercial e um hífen volta a ser os caracteres originais, então Inbox/&ZeVnLIqe- vira de novo Inbox/日本語.
Por que um nome em UTF-7 modificado pode falhar na decodificação?
Falha quando um e comercial no final não tem hífen de fechamento, um trecho contém algo além de letras, dígitos, sinal de mais e vírgula, um trecho está vazio ou há caracteres fora do ASCII fora de um trecho. A ferramenta avisa em vez de adivinhar.
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/utf7-imap \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Inbox/日本語"}'const res = await fetch("https://api.kit.forhosting.com/enc/utf7-imap", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Inbox/日本語"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/utf7-imap",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Inbox/日本語"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/utf7-imap", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Inbox/日本語"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Inbox/日本語"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/utf7-imap", 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": "Inbox/日本語"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.utf7_imap",
"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
O algoritmo é plenamente determinístico, roda de graça no seu navegador e reporta sequências de deslocamento malformadas, Base64 inválido e não-ASCII ilegal solto com invalid_input em vez de adivinhar. Chamadas de API bem-sucedidas custam US$ 0,002 cada; falhas de validação não são cobradas.
Como text e mode são validados e quando as solicitações falham
Encode aceita qualquer string Unicode bem formada até o limite de caracteres documentado, percorre unidades de código com cuidado para que pares substitutos de caracteres fora do BMP permaneçam juntos e rejeita substitutos sem par em vez de emitir Base64 corrompido. Seções Base64 vazias entre e comercial e hífen são rejeitadas porque o único deslocamento vazio legal é o literal dedicado e comercial-hífen para um único e comercial. O campo obrigatório é text, com aliases input, value e s para que formulários e scripts reutilizem nomes de coluna existentes. Mode tem padrão encode e aceita decode; os aliases op, direction e action mapeiam para o mesmo interruptor. Decode exige uma string UTF-7 modificada bem formada: um e comercial no fim da entrada sem hífen de fechamento, uma carga Base64 com caracteres fora de A–Z a–z zero–nove mais e vírgula, uma carga que decodifica para um número ímpar de bytes, ou caracteres não ASCII fora de uma seção de deslocamento falham todos com invalid_input e uma mensagem precisa. Todo o caminho evita Date, números aleatórios e E/S de rede, o que mantém demos no navegador, goldens de CI e respostas de API idênticas bit a bit para a mesma entrada. Validação com falha não é cobrada, então você pode sondar linhas LIST ruins a baixo custo enquanto transformações bem-sucedidas permanecem em US$ 0,002 por item.
Onde a codificação de nomes de caixa se encaixa em clientes, servidores e testes
Nesta página a conversão roda grátis no navegador; pela API cada solicitação bem-sucedida custa US$ 0,002, nada é armazenado após a resposta, e a matemática coincide com os exemplos RFC como o clássico caminho de Taipei e japonês que vira uma sequência de segmentos Base64 modificados envolvidos por e comercial.
Casos de integração
Geração de fixtures de protocolo
Produza pares de nomes de caixa reproduzíveis para testes unitários, arquivos golden e verificações de integração IMAP em vários locales.
Perguntas técnicas
Quais erros causam invalid_input?
Deslocamentos de e comercial sem término, caracteres Base64 ilegais, sequências de bytes decodificados de comprimento ímpar, substitutos sem par, não-ASCII solto fora de uma seção de deslocamento e texto ausente. Chamadas com falha não são cobradas.
Quanto custa a API?
US$ 0,002 por solicitação bem-sucedida. A ferramenta no navegador é gratuita. Entrada inválida não é cobrada.