Encodeur d'octets UTF-8
Voyez les octets UTF-8 exacts de n’importe quel texte : « Hi » devient les paires hex 48 69, une paire par octet, et l’hex collé redonne les caractères d’origine. Les séquences UTF-8 invalides sont refusées, jamais rafistolées. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- Hi
- Mode de calcul
- Encode
- Résultat
- 48 69
- Entrée
- Hi
- Hexadécimal
- 48 69
- Hex compacte
- 4869
Un encodeur d'octets UTF-8 transforme des caractères lisibles en la séquence exacte d'octets que Unicode attribue sous UTF-8, affichés sous forme de paires hexadécimales à deux chiffres, et un décodeur correspondant reconstruit la chaîne d'origine à partir de ces octets. Saisissez du texte brut et choisissez encoder pour recevoir des paires hex séparées par des espaces —une paire par octet— ou collez du hex et choisissez décoder pour retrouver le texte.
Comment le texte devient des octets hex UTF-8 et pourquoi la validité compte
Les ordinateurs stockent le texte sous forme de séquences d'octets. UTF-8 encode chaque point de code Unicode en un à quatre octets : les lettres latines de base n'ont souvent besoin que d'un seul octet identique à l'ASCII classique, tandis que le latin accentué, de nombreux scripts non latins et les emoji en demandent deux, trois ou quatre.
L'encodage parcourt la chaîne avec un encodeur UTF-8 standard, puis écrit chaque octet sous forme de deux chiffres hexadécimaux minuscules de zéro à deux cent cinquante-cinq, en joignant les paires par une seule espace pour compter les octets d'un coup d'œil. Le décodage fait l'inverse : il découpe l'entrée en paires candidates, exige que chaque paire comporte exactement deux chiffres hex, convertit chaque paire en octet, puis interprète le tableau d'octets comme du UTF-8 avec validation fatale.
Si une paire contient un chiffre, trois chiffres ou un caractère non hexadécimal, ou si la chaîne hex continue a une longueur impaire, le convertisseur doit échouer. Un remplissage silencieux modifierait la charge utile et masquerait les erreurs d'exercice. Plus important encore, même un hex bien formé peut décrire des octets qui ne sont pas du UTF-8 valide —par exemple un octet de continuation isolé ou un octet de tête multioctet tronqué—.
Cette page vise les personnes qui recherchent un encodeur d'octets UTF-8, un outil texte vers octets hex ou un décodeur hex UTF-8 en ligne ; ce n'est ni un convertisseur de groupes de bits binaires ni un détecteur général d'encodages pour les pages de code historiques.
Conseils pratiques, limites et outils associés
Préférez decode lorsque vous disposez déjà du hex d'une capture de paquets, d'une ligne de journal ou d'un manuel et souhaitez retrouver les caractères. Les vérifications aller-retour sont le test de fumée le plus rapide : encodez un mot court comme Hi, confirmez que les deux paires correspondent aux octets ASCII connus quarante-huit et soixante-neuf en hex, puis décodez ces paires et confirmez que vous récupérez la chaîne d'origine. Gardez les contenus sous la limite de caractères publiée ; les dumps de plusieurs mégaoctets relèvent du hors ligne.
Cet outil n'est pas un convertisseur de bits binaires —les groupes binaires sont en base deux, pas en base seize— ni un outil de réparation de mojibake qui devine Latin-1 ou Windows-1252. Préférez cette capacité lorsque l'intention de recherche oppose texte et octets hex UTF-8 ; utilisez le convertisseur texte-binaire lorsque vous avez besoin de groupes de huit bits de zéros et de uns, et un outil de réparation de conversion vers UTF-8 lorsque le problème est un mauvais encodage source plutôt que la présentation hex.
Pour enseigner, montrez le même emoji ou la même lettre accentuée à côté d'une lettre ASCII simple afin que les étudiants voient les octets UTF-8 multioctets apparaître comme des paires hex supplémentaires plutôt qu'un code mystérieux unique.
Cas d’usage
Vérification des devoirs sur les encodages multioctets UTF-8
Les étudiants encodent de courtes phrases avec accents ou emoji, comparent leurs paires hex manuscrites au résultat déterministe et décodent le hex fourni par l'enseignant sans tableur.
Démonstrations pédagogiques sur les protocoles et réseaux
Les ateliers montrent comment des étiquettes imprimables deviennent des octets sur le réseau, puis forcent du hex UTF-8 invalide pour illustrer le cadrage strict et les règles du décodeur.
Questions fréquentes
Que renvoie l'encodeur d'octets UTF-8 ?
En mode encode, il renvoie des paires hex à deux chiffres séparées par des espaces (une par octet UTF-8), une chaîne hex compacte et des tableaux de paires et de valeurs entières d'octets. En mode decode, il renvoie le texte UTF-8 récupéré.
Que se passe-t-il avec une séquence UTF-8 invalide ?
Le mode decode utilise une validation UTF-8 fatale.
Prend-il en charge les emoji et les scripts non latins ?
Oui. L'encodage utilise UTF-8, donc les caractères multioctets deviennent plusieurs paires hex. Le décodage rejette les séquences d'octets qui ne sont pas du UTF-8 valide.
Puis-je coller du hex sans espaces ?
Oui, si la chaîne continue ne contient que des chiffres hexadécimaux et que sa longueur est un multiple de deux.
L'encodeur d'octets UTF-8 est-il gratuit ?
L'outil du navigateur est gratuit et s'exécute localement.
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/utf8-bytes \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hi"}'const res = await fetch("https://api.kit.forhosting.com/enc/utf8-bytes", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hi"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/utf8-bytes",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hi"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/utf8-bytes", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hi"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hi"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/utf8-bytes", 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": "Hi"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.utf8_bytes",
"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.
Limites
max_chars | 100000 |
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
Un hex invalide, un nombre impair de chiffres ou une séquence d'octets qui n'est pas du UTF-8 légal renvoie une erreur invalid_input claire au lieu d'inventer des caractères de remplacement. Le processus est une arithmétique purement déterministe sur des octets UTF-8 —sans réseau, sans graines aléatoires, sans dépendance à l'horloge— de sorte que l'exécuteur gratuit du navigateur et l'API prépayée renvoient le même JSON à chaque appel.
Comment le texte devient des octets hex UTF-8 et pourquoi la validité compte
Émettre le caractère de remplacement Unicode masquerait ce défaut ; cet outil rejette avec invalid_input afin que l'appelant voie la même erreur ferme qu'un parser strict lèverait.
Comment appeler l'API et ce que contient la réponse
Le mode par défaut est encode : les octets UTF-8 de text deviennent des paires hex à deux chiffres séparées par des espaces. Le mode decode traite text comme des paires hex —octets séparés par des espaces, préfixes 0x facultatifs ou chaîne hex continue dont la longueur est un multiple de deux— et renvoie la chaîne UTF-8 récupérée. Envoyez un corps JSON avec un champ chaîne obligatoire text (alias input, value et data) et un mode facultatif qui vaut encode ou decode. La longueur de l'entrée est plafonnée à cent mille caractères afin qu'une seule requête ne puisse épuiser la mémoire du Worker sur d'énormes chaînes. En cas de succès avec encode, la réponse inclut mode, input, result et hex avec la même chaîne hex séparée par des espaces, hex_compact sans espaces, pairs sous forme de tableau de chaînes de deux caractères, bytes avec les valeurs entières des octets, byte_count et un court message en anglais. En cas de succès avec decode, la réponse inclut mode, input, result et text avec la chaîne UTF-8 décodée, hex normalisé en paires séparées par des espaces, hex_compact, les mêmes tableaux pairs et bytes, byte_count et un message correspondant. Une validation échouée —text manquant, text qui n'est pas une chaîne, entrée trop volumineuse, mode inconnu, paire hex invalide, longueur impaire du hex continu ou octets décodés qui ne sont pas du UTF-8 valide— renvoie invalid_input et n'est jamais facturée. Le tarif est un forfait de $0.002 par requête réussie avec l'unité item et un prix marginal unitaire nul.
Conseils pratiques, limites et outils associés
Soumettez délibérément une séquence multioctet incomplète, comme un seul octet de tête sans sa continuation, ou une chaîne hex continue de longueur impaire, pour vérifier que votre client gère invalid_input et le message d'erreur qui mentionne un UTF-8 ou un hex invalide. Les tâches échouées qui renvoient invalid_input ne consomment pas de solde prépayé, ce qui garde les scripts exploratoires bon marché quand les apprenants collent du hex incomplet.
Cas d'intégration
Fixtures de tests unitaires pour codecs et parsers
Générez des chaînes d'octets hex connues à partir du texte de la fixture et vérifiez que le décodage récupère les mêmes octets UTF-8 en CI sans helpers TextEncoder improvisés.