Encodeur et décodeur yEnc
Encode « Hello Usenet » en fragment yEnc encadré, avec un en-tête =ybegin et une ligne =yend portant la somme de contrôle 38A1E859, et décode ces fragments en texte. Chaque octet est décalé de 42 au lieu d'être étendu, d'où un surcoût bien moindre qu'avec Base64. 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 Usenet
- Mode de calcul
- Encode
- Nom
- hello.bin
- Encodage
- yenc
- Taille
- 12
- Crc32
- 38A1E859
- Droite
- 128
Cet encodeur yEnc convertit du texte UTF-8 brut au format de transfert binaire à faible surcoût longtemps utilisé sur Usenet, et décode des charges yEnc encadrées ou brutes pour retrouver un texte lisible. yEnc conserve presque chaque octet comme un seul caractère imprimable ou étendu après un décalage fixe de quarante-deux, en n’échappant qu’un petit ensemble critique afin que les données binaires circulent dans les corps d’articles NNTP avec bien moins d’expansion que Base64. Le moteur est entièrement déterministe : le même texte, mode, nom et longueur de ligne produisent toujours le même résultat, sans appels réseau, sans sels aléatoires et sans raccourcis dépendant de la date. Les contrôles courants incluent l’encodage de Hello Usenet en fragment d’article encadré et le décodage de ce fragment vers la phrase d’origine.
Ce qu’est yEnc et ce que renvoie cet outil
yEnc est un codage de type transfert de contenu conçu pour que des fichiers binaires circulent dans des articles Usenet sans la pénalité de taille d’un tiers de Base64. Chaque octet d’entrée est décalé de quarante-deux modulo deux cent cinquante-six ; seuls les valeurs critiques null, saut de ligne, retour chariot et égal sont échappés en préfixant un signe égal et en ajoutant soixante-quatre avant l’émission.
Cette page suit toujours ce contrat pour le texte UTF-8 : le mode encode encode votre chaîne en UTF-8, applique le décalage et les échappements critiques, coupe les lignes et émet des en-têtes avec un CRC calculé ; le mode decode retire les lignes de contrôle, ignore CR et LF dans le corps, inverse les échappements, vérifie size et CRC lorsqu’ils sont présents, et rejette les séquences d’égal incomplètes au lieu de deviner.
Si vous avez besoin d’un empaquetage opaque sûr pour le e-mail, préférez les points d’accès Base64 ou quoted-printable ; cette page vise le codage yEnc orienté Usenet que les clients de news et les posters binaires attendent déjà.
yEnc dans Usenet, les binaires et le support
Les équipes frontend et support décodent des extraits yEnc lors de l’investigation de tickets sans coller des données dans des scripts ad hoc qui maltraitent les échappements critiques ou les sauts de ligne souples. Les services backend encodent de courtes chaînes multilingues ou des échantillons de configuration en yEnc encadré pour des tests d’intégration qui doivent correspondre au décalage et à la disposition d’en-tête d’un vrai poster.
Les ingénieurs qualité génèrent des paires encode et decode déterministes pour des tests de contrat afin qu’une bibliothèque prétendant prendre en charge yEnc ne puisse pas changer en silence les règles d’échappement, les polynômes CRC ou l’ordre des attributs d’en-tête sans casser les goldens. Les enseignants utilisent le même outil pour montrer la différence entre l’opacité de Base64 et le codage Usenet à faible surcoût de yEnc pour des charges surtout binaires.
Associez-le aux aides Base64 et quoted-printable lorsque vous avez besoin d’encodages de transfert voisins, et à d’autres outils texte pour constituer un petit laboratoire d’encodeurs gratuits et déterministes.
Cas d’usage
Débogage d’articles Usenet
Encodez ou décodez des fragments d’articles yEnc pour que size sur =ybegin, les échappements du corps et les bandes CRC-32 correspondent à ce qu’attendent les newsreaders.
Validation d’analyseur et de CRC
Décodez des charges suspectes pour faire apparaître échappements incomplets, écarts de size et erreurs CRC-32 sans deviner.
Questions fréquentes
Combien coûte l’encodeur yEnc ?
Il est gratuit dans votre navigateur sur cette page.
En quoi yEnc diffère-t-il de Base64 ?
yEnc décale chaque octet de 42 et n’échappe que quelques valeurs critiques, si bien que le surcoût est bien inférieur à l’alphabet à quatre caractères de Base64. Il a été conçu pour les corps d’articles Usenet plutôt que pour le MIME du e-mail.
Que se passe-t-il si un échappement ou le CRC est mal formé ?
Les échappements '=' incomplets, les écarts de size et les écarts CRC-32 sont rejetés plutôt que devinés.
Le résultat est-il déterministe ?
Oui. Le même texte, mode, nom et longueur de ligne produisent toujours le même résultat, sans réseau, aléatoire ni comportement dépendant de la date.
Quels octets yEnc échappe-t-il ?
Chaque octet est d'abord décalé de 42. Si le résultat est l'une des quatre valeurs critiques, nul, saut de ligne, retour chariot ou signe égal, il s'écrit avec un signe égal suivi de cette valeur plus 64 ; le reste tient en un seul caractère.
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/yenc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello Usenet"}'const res = await fetch("https://api.kit.forhosting.com/enc/yenc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello Usenet"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/yenc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello Usenet"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/yenc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello Usenet"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello Usenet"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/yenc", 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 Usenet"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.yenc",
"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
Utilisez-le gratuitement dans le navigateur pour la pratique d’outils Usenet et le débogage d’articles, ou appelez l’API à $0.002 par requête réussie lorsque vos pipelines ont besoin de transformations yEnc reproductibles en CI et services backend.
Ce qu’est yEnc et ce que renvoie cet outil
Les encodeurs insèrent ensuite des sauts de ligne souples pour que les lignes d’article restent proches de la largeur classique de cent vingt-huit caractères, et encadrent le corps avec une ligne =ybegin portant size, une longueur de ligne optionnelle et un nom de fichier, plus une bande =yend qui inclut souvent size et une somme de contrôle IEEE CRC-32. La réponse JSON inclut result pour la chaîne transformée, mode qui répète encode ou decode, encoding fixé à yenc, size pour la longueur de la charge binaire, name et crc32 optionnels, framed true lorsque des en-têtes ont été utilisés ou détectés, et input_bytes plus output_bytes pour affirmer les tailles dans les tests. Il n’y a ni chemin de streaming ni réparation silencieuse d’un yEnc cassé : soit la chaîne est valide selon ces règles, soit la requête échoue avec invalid_input.
Comment text, mode, name et line sont lus et comment les résultats restent reproductibles
Encode accepte toute chaîne Unicode, la convertit avec le TextEncoder de la plateforme en octets UTF-8, puis émet un fragment d’article yEnc encadré avec CRC-32 en majuscules. Après récupération des octets, un décodage UTF-8 fatal empêche que des déchets binaires deviennent du texte mojibake. 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 le même commutateur pour les scripts qui utilisent déjà ces noms. Le name optionnel (alias filename, file) est écrit sur la ligne =ybegin à l’encodage et vaut data.bin par défaut ; il ne doit pas contenir de retours chariot, de sauts de ligne ni de signes égal. Le line optionnel (alias line_length, linewidth) fixe la largeur de coupure du corps entre trente-deux et cinq cent douze caractères et vaut cent vingt-huit par défaut, conformément à la pratique yEnc courante. Decode accepte un texte encadré avec =ybegin et =yend ou un flux corps seul : un échappement d’égal incomplet en fin, un égal suivi d’un saut de ligne, un écart de size par rapport au nombre d’octets décodés ou un écart CRC-32 échouent avec un message invalid_input clair. Associez l’exécution gratuite dans le navigateur sur cette page à l’API payante lorsque vous avez besoin du même résultat mathématique dans un pipeline automatisé sans réimplémenter vous-même les tables yEnc. 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.
Où yEnc s’inscrit dans Usenet, les binaires 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, une validation échouée n’est pas facturée, et rien n’est stocké après la réponse. Cette division — exploration interactive gratuite et API identique payante — correspond au reste du catalogue KIT de niveau A et vous permet de passer d’une démonstration en classe à un pipeline automatisé sans changer le résultat encodé.
Cas d'intégration
Génération de fixtures binaires
Produisez des chaînes yEnc encadrées et reproductibles pour tests unitaires, fichiers golden et contrôles d’intégration NNTP ou de posters.
Questions techniques
Quels modes sont pris en charge ?
mode=encode (par défaut) transforme le texte brut en yEnc encadré avec =ybegin et =yend. mode=decode transforme une chaîne yEnc (encadrée ou corps seul) en texte UTF-8.