Encodeur UTF-7 modifié IMAP
Obtenez le nom de dossier exact qu’attend un serveur IMAP : Inbox/日本語 devient Inbox/&ZeVnLIqe-, et un nom obscur relevé dans un journal redevient lisible. Les noms purement anglais ne changent pas. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- Inbox/日本語
- Mode de calcul
- Encode
- Résultat
- Inbox/&ZeVnLIqe-
- Encodage
- modified_utf7_imap
- Longueur de l'entrée
- 9
- Longueur de la sortie
- 16
Les noms de boîtes aux lettres IMAP sur le fil utilisent un dialecte d'UTF-7 appelé UTF-7 modifié (RFC 3501 section 5.1.3). Les caractères US-ASCII imprimables, sauf l'esperluette, conservent leur forme ordinaire ; une esperluette seule devient la séquence de deux caractères esperluette-trait d'union ; et tout autre caractère—accents, CJK, emoji et codes de contrôle—est empaqueté en UTF-16BE dans une section Base64 modifiée qui commence par une esperluette et se termine par un trait d'union, la barre oblique étant remplacée par une virgule. Cet outil encode un nom de dossier Unicode lisible en cette chaîne filaire ou décode une réponse LIST/SELECT en texte lisible.
Ce qu'est l'UTF-7 modifié IMAP et ce que renvoie ce convertisseur
Les protocoles de boîte standard échangent encore les noms de dossiers comme des chaînes sûres sur 7 bits même lorsque les utilisateurs créent des libellés en japonais, espagnol, arabe ou avec des emoji. IMAP a résolu cela avec l'UTF-7 modifié plutôt que l'UTF-8 brut sur chaque chemin serveur : le nom reste surtout lisible lorsqu'il est purement anglais, tandis que les segments internationaux deviennent des blocs compacts enveloppés d'esperluettes. Les règles d'encodage sont strictes.
Les caractères de l'espace au tilde, sauf l'esperluette, s'écrivent inchangés. L'esperluette n'est jamais laissée nue ; elle s'écrit toujours comme esperluette suivie d'un trait d'union afin que les analyseurs traitent le bloc Base64 suivant comme une bascule délibérée. Tout caractère hors de cet ensemble direct est regroupé en une plage, converti en unités de code UTF-16 big-endian, puis encodé en Base64 avec l'alphabet classique sauf que le soixante-quatrième symbole est une virgule au lieu d'une barre, et les signes égal de remplissage sont omis.
Le mode encode renvoie cette chaîne filaire plus le mode résolu, une étiquette d'encodage fixe et les longueurs d'entrée et de sortie. Le mode decode inverse le chemin : il copie l'ASCII direct, développe esperluette-trait d'union en une seule esperluette et transforme chaque section esperluette-charge-trait d'union en Unicode.
Où l'encodage des noms de boîte s'inscrit dans clients, serveurs et tests
Les auteurs de clients rencontrent l'UTF-7 modifié lorsqu'ils implémentent CREATE, RENAME, LIST ou LSUB et ont besoin que le nom sur le fil corresponde à ce que Dovecot, Cyrus, Exchange ou Gmail attendent pour les dossiers internationaux. Les ingénieurs support collent un jeton de dossier cryptique d'un journal de protocole et ont besoin du libellé humain sans ouvrir un client de bureau. Les services backend normalisent les titres de dossier orientés utilisateur avant de les stocker dans un proxy IMAP ou de comparer des cibles SELECT dans des tests d'intégration.
Les ingénieurs qualité génèrent des paires encode et decode pour des tests de contrat afin qu'une mise à jour de bibliothèque ne puisse pas changer en silence la virgule contre la barre en Base64 ni omettre l'échappement de l'esperluette. Les enseignants utilisent la même page pour expliquer la différence entre extensions de boîte UTF-8, UTF-7 modifié hérité et noms d'affichage qui ne touchent jamais le fil. Associez-le à d'autres encodeurs gratuits du catalogue lorsque vous construisez un petit laboratoire d'outils texte déterministes pour le courrier et le travail MIME.
Cas d’usage
Débogage de clients et serveurs IMAP
Encodez des noms de dossier Unicode pour CREATE ou SELECT, ou décodez des réponses LIST contenant des segments UTF-7 modifié enveloppés d'esperluettes.
Traduction de journaux de support
Transformez des jetons de boîte cryptiques du fil issus de traces protocole en libellés Unicode lisibles sans client de messagerie complet.
Questions fréquentes
En quoi l'UTF-7 modifié IMAP diffère-t-il de l'UTF-7 ordinaire ?
IMAP utilise l'esperluette comme caractère de bascule au lieu du plus, et l'alphabet Base64 utilise la virgule au lieu de la barre. L'esperluette s'écrit esperluette-trait d'union. Les signes égal de remplissage sont omis.
Que renvoie le mode encode pour de l'ASCII pur ?
La même chaîne ASCII imprimable, car les caractères US-ASCII directs sauf l'esperluette se représentent eux-mêmes. Seuls les caractères non directs et les esperluettes nues sont réécrits.
Comment une esperluette littérale est-elle encodée ?
Comme la séquence de deux caractères esperluette-trait d'union (&-). Cela garde l'analyse de bascule non ambiguë lorsqu'une vraie section Base64 suit plus loin dans le nom.
Comment lire un nom de dossier comme Inbox/&ZeVnLIqe- relevé dans un journal ?
Choisissez le décodage et collez le nom tel qu’il apparaît. Chaque section entre une esperluette et un tiret redevient ses caractères : Inbox/&ZeVnLIqe- se lit de nouveau Inbox/日本語.
Pourquoi un nom en UTF-7 modifié peut-il refuser de se décoder ?
Le décodage échoue si une esperluette finale n’a pas de tiret de fermeture, si une section contient autre chose que des lettres, des chiffres, le plus et la virgule, si une section est vide ou si des caractères non ASCII sont hors section. L’outil le signale au lieu de deviner.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
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)Exemple de requête
{
"text": "Inbox/日本語"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.utf7_imap",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
L'algorithme est pleinement déterministe, s'exécute gratuitement dans votre navigateur et signale les séquences de bascule mal formées, le Base64 incorrect et le non-ASCII illégal nu avec invalid_input au lieu de deviner. Les appels API réussis coûtent $0.002 chacun ; les échecs de validation ne sont pas facturés.
Comment text et mode sont validés et quand les requêtes échouent
Encode accepte toute chaîne Unicode bien formée jusqu'à la limite de caractères documentée, parcourt les unités de code avec soin pour que les paires de substituts des caractères hors BMP restent ensemble, et rejette les substituts non appariés au lieu d'émettre un Base64 corrompu. Les sections Base64 vides entre esperluette et trait d'union sont rejetées car la seule bascule vide légale est le littéral dédié esperluette-trait d'union pour une seule esperluette. Le champ obligatoire est text, avec les alias input, value et s afin que formulaires et scripts réutilisent des noms de colonnes existants. Mode vaut encode par défaut et accepte decode ; les alias op, direction et action correspondent au même commutateur. Decode exige une chaîne UTF-7 modifié bien formée : une esperluette en fin d'entrée sans trait d'union de fermeture, une charge Base64 contenant des caractères hors de A–Z a–z zéro–neuf plus et virgule, une charge qui décode en un nombre impair d'octets, ou des caractères non ASCII hors d'une section de bascule échouent tous avec invalid_input et un message précis. Tout le chemin évite Date, les nombres aléatoires et les E/S réseau, ce qui garde les démos navigateur, les goldens CI et les réponses API bit à bit identiques pour la même entrée. Une validation échouée n'est pas facturée, vous pouvez donc sonder de mauvaises lignes LIST à bas coût tandis que les transformations réussies restent à $0.002 par élément.
Où l'encodage des noms de boîte s'inscrit dans clients, serveurs et tests
Sur cette page la conversion s'exécute gratuitement dans le navigateur ; via l'API chaque requête réussie coûte $0.002, rien n'est stocké après la réponse, et les mathématiques correspondent aux exemples RFC tels que le classique chemin Taipei et japonais qui devient une séquence de segments Base64 modifiés enveloppés d'esperluettes.
Cas d'intégration
Génération de fixtures de protocole
Produisez des paires de noms de boîte reproductibles pour tests unitaires, fichiers golden et contrôles d'intégration IMAP multi-locales.
Questions techniques
Quelles erreurs provoquent invalid_input ?
Bascules d'esperluette non terminées, caractères Base64 illégaux, plages d'octets décodés de longueur impaire, substituts non appariés, non-ASCII nu hors d'une section de bascule et texte manquant. Les appels en échec ne sont pas facturés.
Combien coûte l'API ?
$0.002 par requête réussie. L'outil dans le navigateur est gratuit. Une entrée invalide n'est pas facturée.