Encodeur Q d'en-têtes
Mettez des accents dans l'objet ou le nom d'expéditeur d'un e-mail sans rien casser : Hello café devient =?UTF-8?Q?Hello_caf=C3=A9?=, et un mot encodé collé redevient du texte lisible. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- Hello café
- Mode de calcul
- Encode
- Résultat
- =?UTF-8?Q?Hello_caf=C3=A9?=
- Encodage
- rfc2047-q
- Jeu de caractères
- UTF-8
- Forme
- Encoded word
Cet encodeur Q d'en-têtes convertit du texte UTF-8 brut en forme Q RFC 2047 utilisée dans les encoded-words MIME des en-têtes d'e-mail non ASCII, et décode ces chaînes en texte lisible. Contrairement au quoted-printable du corps, le Q-encoding d'en-tête mappe chaque espace sur un underscore, interdit les sauts de ligne souples dans un encoded-word, et réserve le point d'interrogation et l'underscore pour que les analyseurs de messagerie ne confondent jamais la charge utile avec le cadre =? charset? Q? …? Vérifications courantes : encoder Hello café en =? UTF-8? Q? Hello_caf=C3=A9? = et décoder cette chaîne vers la phrase d'origine.
Ce qu'est le Q-encoding RFC 2047 et ce que renvoie cet outil
RFC 2047 définit les encoded-words pour que les en-têtes d'e-mail qui attendaient historiquement surtout de l'ASCII puissent encore porter du texte international sans briser les règles de chemin SMTP. Un encoded-word a la forme égal-interrogation charset interrogation encodage interrogation charge interrogation-égal, où la lettre d'encodage est Q pour la méthode de type quoted-printable ou B pour Base64.
La méthode Q garde la plupart du texte latin lisible sur un terminal simple : l'ASCII imprimable sûr apparaît tel quel, l'espace s'écrit de préférence en underscore, et tout autre octet devient un signe égal suivi de deux chiffres hexadécimaux majuscules. Le signe égal, le point d'interrogation et l'underscore doivent être échappés lorsqu'ils apparaissent comme données, car ils sont structurels dans la grammaire de l'encoded-word.
Les sauts de ligne souples du quoted-printable de corps ne s'appliquent pas ici : un encoded-word est un jeton atomique et ne doit pas contenir de séquence de saut souple.
Cette page suit toujours ce contrat pour le texte UTF-8 par défaut : le mode encode mappe votre chaîne en octets du charset, émet un underscore pour l'espace et égal-hex pour les octets non sûrs, puis enveloppe éventuellement la charge en encoded-word complet ; le mode decode accepte un encoded-word complet ou une charge Q nue, développe underscore et paires égal-hex, et rejette les séquences incomplètes ou non hexadécimales au lieu de deviner.
Si vous avez besoin d'un empaquetage binaire opaque pour les en-têtes, préférez la méthode B ou un auxiliaire Base64 ; cette page vise la voie Q lisible que les objets et noms d'affichage utilisent encore chaque jour.
Où l'on croise l'encodage Q dans l'en-tête d'un e-mail
Les développeurs rencontrent le Q-encoding RFC 2047 en inspectant des lignes Subject qui commencent par égal-interrogation UTF-8 interrogation Q, en rédigeant des noms d'affichage internationaux pour les en-têtes From et To, ou en déboguant pourquoi un accent de café est devenu underscore et paires égal-hex dans un dump de message brut. Les équipes frontend et support décodent des extraits Q pendant l'investigation de tickets sans coller des données dans des scripts ad hoc qui gèrent mal l'underscore pour l'espace ou confondent le quoted-printable du corps avec les règles Q d'en-tête.
Les services backend encodent des échantillons de configuration ou de courtes chaînes multilingues avant de les placer dans des champs d'en-tête où un transport 8 bits sans restriction n'est pas garanti. Les ingénieurs qualité génèrent des paires encode et decode déterministes pour des tests de contrat afin qu'une bibliothèque de messagerie prétendant prendre en charge RFC 2047 ne puisse pas changer silencieusement la casse hexadécimale, laisser des espaces non échappés ou accepter des séquences égal cassées.
Les enseignants utilisent le même outil pour expliquer la différence entre les sauts souples du quoted-printable de corps et les atomes Q d'en-tête qui doivent rester sur un seul jeton. Associez-le à des aides MIME quoted-printable lorsque vous travaillez sur des corps plutôt que des en-têtes, et à des aides Base64 lorsqu'un encoded-word B est le bon choix pour des données d'en-tête denses d'apparence binaire.
Cas d’usage
Débogage de Subject et de nom d'affichage
Encodez ou décodez des fragments Subject et From de nom d'affichage en Q RFC 2047 pour que accents et espaces correspondent à ce que montrent les clients de messagerie.
Préparation d'en-têtes pour passerelles héritées
Transformez du texte UTF-8 brut en jetons d'en-tête codés en Q sûrs pour le transport avant envoi sur des chemins de messagerie 7 bits restreints.
Questions fréquentes
Combien coûte l'encodeur Q d'en-têtes ?
C'est gratuit dans votre navigateur sur cette page.
En quoi le Q-encoding d'en-tête diffère-t-il du quoted-printable de corps ?
Le Q-encoding d'en-tête (RFC 2047) mappe l'espace sur underscore, interdit les sauts de ligne souples dans un encoded-word et traite =, ? et _ comme spéciaux.
Que se passe-t-il si une séquence d'échappement est mal formée ?
Un =XX incomplet, des chiffres non hexadécimaux après = ou des caractères illégaux dans une charge Q sont rejetés plutôt que devinés.
Pourquoi les espaces deviennent-ils des tirets bas ?
Un mot encodé doit rester un seul bloc sans espace dans l'en-tête, donc la méthode Q écrit chaque espace sous forme de tiret bas. Au décodage, chaque tiret bas redevient un espace, et un vrai tiret bas du texte est échappé.
Faut-il choisir l'encodage Q ou B pour un en-tête ?
Choisissez Q quand le texte est surtout en lettres latines, car il reste lisible dans un message brut. B, fondé sur Base64, convient aux données denses qui seraient presque entièrement échappées en Q. Cet outil ne traite que la forme Q.
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/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)Exemple de requête
{
"text": "Hello café"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.quoted_printable_q",
"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
Le moteur est entièrement déterministe : la même entrée, mode, charset et form produisent toujours le même résultat, sans appels réseau, sels aléatoires ni raccourcis dépendants de la date. Utilisez-le gratuitement dans le navigateur pour le débogage du courrier et la pratique des en-têtes, ou appelez l'API à $0.002 par requête réussie lorsque les pipelines ont besoin de transformations RFC 2047 reproductibles en CI et services backend.
Ce qu'est le Q-encoding RFC 2047 et ce que renvoie cet outil
La réponse JSON inclut result pour la chaîne transformée, mode qui répète encode ou decode, encoding fixé à rfc2047-q, charset, form (encoded_word ou payload), le champ payload nu pour des assertions faciles, et input_bytes plus output_bytes pour figer les tailles dans les tests. Il n'y a ni chemin de streaming ni réparation silencieuse de texte Q cassé : soit la chaîne est valide, soit la requête échoue avec invalid_input.
Comment text, mode, charset et form sont lus et comment les résultats restent reproductibles
Charset vaut UTF-8 par défaut et est écrit dans l'encoded-word à l'encodage ; lors du décodage d'un encoded-word complet le charset est pris du jeton lui-même, et lors du décodage d'une charge nue le paramètre charset choisit comment les octets récupérés deviennent du texte. charset? Q? …? Encode accepte des chaînes Unicode, les convertit avec les règles du charset choisi, puis émet des jetons Q avec échappements hexadécimaux majuscules et underscore pour chaque espace. Après récupération des octets, un décodage UTF-8 fatal garantit que des déchets binaires ne deviennent pas du mojibake lorsque le charset est UTF-8. Le champ de charge préféré est text, avec les alias input, value et s, afin que formulaires, chaînes de requête et clients SDK réutilisent le même contrat sans renommer les colonnes. Mode vaut encode par défaut et accepte decode explicitement ; les alias op, direction et action mappent vers le même commutateur pour les scripts qui utilisent déjà ces noms. Form vaut encoded_word par défaut pour que encode renvoie une chaîne complète =? = prête pour un fragment Subject ou From de nom d'affichage ; définissez form à payload lorsque vous ne voulez que le corps Q interne pour des tests unitaires ou pour composer vous-même des en-têtes multi-segments. Decode exige une chaîne Q bien formée : un égal seul en fin d'entrée, un égal suivi d'un seul caractère, ou un égal suivi de chiffres non hexadécimaux échouent avec un message invalid_input clair nommant l'échappement mal formé. Associez l'exécution gratuite du navigateur sur cette page à l'API tarifée lorsque vous avez besoin du résultat mathématique identique dans un pipeline automatisé sans réimplémenter vous-même les tables RFC 2047. Les entrées invalides renvoient invalid_input et ne sont pas facturées, ce qui maintient la validation peu coûteuse tandis que les transformations réussies restent un prix fixe par élément de $0.002.
Où le Q-encoding s'inscrit dans les en-têtes d'e-mail, MIME et les fixtures de test
Sur cette page le travail s'exécute entièrement dans votre navigateur ; via l'API chaque consultation réussie coûte $0.002, la validation échouée n'est pas facturée, et rien n'est stocké après la réponse. Cette répartition — exploration interactive gratuite et API tarifée au résultat identique — correspond au reste du catalogue KIT niveau A et vous permet de passer d'une démo de cours à un pipeline automatisé sans changer le résultat encodé.
Cas d'intégration
Génération de fixtures d'en-têtes de courrier
Produisez des encoded-words reproductibles pour tests unitaires, fichiers golden et contrôles d'intégration SMTP ou IMAP qui affirment la forme de l'en-tête.
Questions techniques
Quels modes et formes sont pris en charge ?
mode=encode (par défaut) transforme le texte brut en Q-encoding ; mode=decode transforme une chaîne Q en texte. form=encoded_word (par défaut à l'encodage) enveloppe en =?charset?Q?payload?= ; form=payload renvoie seulement le corps Q interne.
Le résultat est-il déterministe ?
Oui. Le même text, mode, charset et form produisent toujours le même résultat, sans réseau, aléatoire ni comportement dépendant de la date.