Quel encodage transforme 测试 en 娴嬭瘯 ?
UTF-8 → GBK Des octets UTF-8 lus comme du GBK. Les six octets UTF-8 (E6 B5 8B E8 AF 95) sont regroupés en trois caractères GBK.
Collez du texte illisible et récupérez l'original. Chaque chaîne d'encodage plausible — UTF-8, GBK, Big5, Shift_JIS, EUC-KR, Windows-1252 — est testée puis classée, la chaîne exacte affichée. Gratuit, privé, dans votre navigateur.
Collez le texte illisible. Chaque chaîne d'encodage plausible est essayée et les résultats sont classés — vous n'avez pas besoin de savoir quel encodage a causé le problème.
测试
UTF-8 → GBK
娴å¬ç˜¯
Windows-1252 / Latin-1 → UTF-8
测试
Windows-1252 / Latin-1 → GBK
测试
Windows-1251 → GBK
Voyez le même texte sous forme d'octets dans tous les encodages courants à la fois — utile quand vous devez savoir exactement ce que votre base de données ou votre protocole va stocker.
| Encodage | Octets | Hexadécimal |
|---|---|---|
| UTF-8 | 6 | E4 B8 AD E6 96 87 |
| GBK | 4 | D6 D0 CE C4 |
| GB18030 | 4 | D6 D0 CE C4 |
| Big5 | 4 | A4 A4 A4 E5 |
| Shift_JIS | 4 | 92 86 95 B6 |
| EUC-KR | 4 | F1 E9 D9 FE |
Conçu et vérifié par l'équipe d'ingénierie Go Tools.
UTF-8 → GBK Des octets UTF-8 lus comme du GBK. Les six octets UTF-8 (E6 B5 8B E8 AF 95) sont regroupés en trois caractères GBK.
UTF-8 → Windows-1252 Les mêmes octets UTF-8 lus comme du Windows-1252. Cet encodage tenant sur un seul octet, chacun des six octets devient un caractère à part entière.
Irrécupérable Non. Ces octets ont été jetés au moment du décodage. Récupérez ce que vous pouvez du texte environnant et remontez à la source pour le reste.
3 contre 2 octets Trois en UTF-8, deux en GBK et en Big5. Cet écart est une cause fréquente de troncature quand une colonne est dimensionnée en octets plutôt qu'en caractères.
Le mojibake, c'est ce que l'on obtient quand un texte est écrit avec un encodage de caractères et lu avec un autre. Les octets sont intacts, seule l'interprétation est fausse. Cette distinction est toute la raison pour laquelle la récupération est possible : si vous déterminez quel encodage a écrit les octets et lequel les a mal lus, vous pouvez rejouer l'erreur à l'envers et retrouver le texte d'origine.
Le mot est japonais — 文字化け, à peu près « transformation de caractères » — et il s'est imposé comme terme standard en anglais parce que le problème était endémique en informatique japonaise bien avant Unicode. Les textes chinois, japonais et coréens en souffrent bien plus que les textes en alphabet latin, pour une raison structurelle : ces langues ont besoin d'encodages multi-octets, et les encodages multi-octets ne sont pas d'accord entre eux sur la façon de grouper les octets. Une chaîne en alphabet latin est le plus souvent de l'ASCII pur, et tous les encodages s'accordent sur l'ASCII.
La récupération échoue dans un seul cas de figure. Quand un décodeur rencontre des octets qui n'ont aucun sens dans son encodage, il ne les garde pas : il les remplace par U+FFFD et les jette. Ces caractères-là sont définitivement perdus. Tout le reste est réversible.
// The mistake, in three lines of JavaScript
const bytes = new TextEncoder().encode('测试'); // UTF-8: E6 B5 8B E8 AF 95
new TextDecoder('gbk').decode(bytes); // '娴嬭瘯' ← mojibake
new TextDecoder('windows-1252').decode(bytes); // '测试' ← same bytes, other mistake Collez le texte illisible et l'outil énumère les chaînes à votre place. Chaque combinaison « écrit en » × « lu comme » entre UTF-8, GBK, GB18030, Big5, Shift_JIS, EUC-KR, Windows-1252 et Windows-1251 est essayée.
Un candidat n'est marqué Exact que si le repasser par la même chaîne reproduit votre saisie caractère pour caractère. C'est un contrôle déterministe : une estimation classée ne vous dirait pas à quels résultats vous pouvez vous fier.
Chaque candidat nomme l'encodage qui a écrit les octets et celui qui les a mal lus. C'est ce qu'il vous faut pour corriger la source, plutôt que réparer les mêmes chaînes de caractères la semaine prochaine.
Si la saisie contient déjà des caractères de remplacement, l'outil le dit clairement et marque tous les candidats comme partiels. L'information détruite au décodage ne revient pas, et prétendre le contraire vous fait perdre l'après-midi.
Affichez n'importe quel texte en octets hexadécimaux côte à côte dans tous les encodages pris en charge, et décodez de l'hexadécimal brut dans l'autre sens. Pratique pour dimensionner des colonnes, lire des captures réseau et vérifier le contenu de BLOB.
Le décodage utilise le TextDecoder du navigateur lui-même. Aucun envoi, aucun stockage, aucune réécriture d'URL — ce qui compte, puisque le texte illisible sort en général directement de la production.
娴嬭瘯
测试
Les deux caractères chinois étaient correctement stockés en UTF-8 (octets E6 B5 8B E8 AF 95), puis un programme a lu ces six octets comme du GBK. GBK regroupe les octets deux par deux : il a donc produit trois caractères au lieu de deux. C'est ce que l'on obtient quand un fichier UTF-8 est ouvert par une application Windows héritée, ou quand le charset de la connexion à la base est réglé sur gbk alors que les données sont en UTF-8.
测试
测试
Les mêmes octets, une autre erreur. Windows-1252 est un encodage sur un seul octet, donc chacun des six octets UTF-8 est devenu un caractère à part entière. Les langues à alphabet latin tombent constamment sur cette version : café devient café, naïve devient naïve. Les signes révélateurs sont les Ã, Â, â et les signes de ponctuation parasites qui apparaissent par paires.
B2 E2 CA D4
测试
Parfois vous ne regardez pas un texte illisible mais un dump hexadécimal issu d'une capture réseau ou d'une colonne BLOB. Collez l'hexadécimal dans la seconde section et choisissez l'encodage. B2 E2 CA D4, c'est 测试 en GBK — les deux mêmes caractères occupent six octets en UTF-8 (E6 B5 8B E8 AF 95) et ne peuvent pas du tout être représentés en Windows-1252.
鏁版嵁搴�
(récupération partielle uniquement)
数据库 a été écrit en UTF-8 puis lu comme du GBK, mais la dernière paire d'octets n'avait aucun sens en GBK : le décodeur l'a remplacée par U+FFFD. Cet octet est perdu. L'outil le signale au lieu de deviner en silence — vous pouvez encore récupérer 数据 au début de la chaîne, mais le dernier caractère est irrécupérable et il faut remonter aux données source.
Mettez-le tel quel, sans identifier l'encodage au préalable. Un court fragment suffit : une douzaine de caractères permet en général de fixer la chaîne.
Exact signifie que la chaîne reproduit exactement votre saisie en aller-retour. Partiel signifie que non : traitez alors le résultat comme une piste.
Chaque candidat indique l'encodage dans lequel le texte a réellement été écrit et celui qui l'a mal lu. Cela vous dit quoi corriger en amont, pas seulement ce que disait le texte.
La seconde section montre n'importe quel texte sous forme d'octets dans tous les encodages courants, et décode l'hexadécimal brut dans l'autre sens. Servez-vous-en pour dimensionner des colonnes ou vérifier des trames de protocole.
Si une chaîne s'affiche correctement et que vous la convertissez quand même, vous créez le mojibake que vous vouliez éviter. Vérifiez d'abord l'affichage, et notez qu'une police manquante donne des carrés (□□□) tandis qu'un problème d'encodage donne de mauvais caractères.
iconv -f UTF-8 -t GBK correct.txt > broken.txt
# Confirmez d'abord l'encodage actuel file -I correct.txt # charset=utf-8 → rien à convertir
Changer le charset déclaré d'une colonne MySQL ne ré-encode pas les octets qu'elle contient. Déclarer en utf8 des données latin1 fait renvoyer par le serveur des octets qui ne sont pas de l'UTF-8 valide, et le pilote les remplace par U+FFFD — ce qui les détruit.
ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;
-- Passez par un type binaire pour préserver les octets au lieu de les réinterpréter ALTER TABLE t MODIFY c VARBINARY(255); ALTER TABLE t MODIFY c VARCHAR(255) CHARACTER SET utf8mb4;
Un candidat marqué Partiel n'a pas passé l'aller-retour. C'est une piste à suivre, pas une réponse à réinjecter dans votre base. Si rien ne ressort en Exact, la saisie avait probablement déjà perdu de l'information : remontez aux octets source.
// Prendre le premier candidat quoi que dise le badge db.update(row.id, candidates[0].text);
// N'écrire que ce qui passe l'aller-retour if (candidates[0].lossless) db.update(row.id, candidates[0].text);
Appeler encode sur ce qui est déjà des bytes, ou decode sur ce qui est déjà une str, lève une exception en Python 3 au lieu de faire silencieusement un aller-retour par l'ASCII. Décodez les octets une seule fois, à la frontière, et gardez ensuite le texte comme du texte.
text = raw.decode('utf-8').encode('gbk').decode('utf-8') # Décodez une seule fois à la frontière, avec l'encodage réellement utilisé par le fichier
with open(path, encoding='gbk') as f:
text = f.read() VARCHAR(50) en bug de troncature.utf8mb4 est le véritable UTF-8. C'est une panne différente du mojibake et l'outil de récupération n'y peut rien, parce que les octets ont réellement disparu.iso-8859-1 et latin1 comme des étiquettes de windows-1252. Les deux ne diffèrent que dans la plage 0x80–0x9F, où l'ISO-8859-1 véritable place des caractères de contrôle et Windows-1252 des signes imprimables comme le tiret cadratin et les guillemets courbes. Comme ce sont précisément ces signes imprimables qui apparaissent dans le mojibake, Windows-1252 est le plus utile des deux et cet outil le liste une seule fois sous les deux noms. iconv -f GBK -t UTF-8 input.txt > output.txt sous macOS ou Linux, ou Get-Content -Encoding Default in.txt | Set-Content -Encoding UTF8 out.txt sous PowerShell. Collez d'abord ici une ligne représentative pour déterminer quels encodages nommer dans la commande — se tromper de sens sur un fichier entier, c'est ainsi qu'un problème d'une ligne en devient un de mille lignes. Encodage et formatage
La table ASCII complète : 128 caractères en décimal, hexadécimal, octal et binaire, plus un convertisseur texte ↔ ASCII. Les caractères de contrôle ont leur échappement, leur notation caret et où vous les croisez.
Encodage et formatage
Décodez et encodez en Base64 en ligne gratuitement. Conversion en temps réel, support UTF-8 et émojis. 100 % privé, dans votre navigateur.
Encodage et formatage
Décodez une chaîne Base64 ou un URI de données en image dans votre navigateur. Aperçu, dimensions et MIME, puis téléchargement en PNG, JPG, GIF, SVG. Sans envoi.
Encodage et formatage
Convertissez du CSV en JSON dans le navigateur. RFC 4180, inférence de types, ligne d'en-tête, sûr pour grands entiers. 100 % privé, sans envoi.
Encodage et formatage
Collez un fichier .env, obtenez du JSON instantanément. Vos mots de passe et clés API ne quittent jamais le navigateur — 100 % privé, sans envoi.
Encodage et formatage
Décodez les entités HTML et déséchappez le HTML en ligne — gratuit, sans inscription, 100 % dans votre navigateur. Reconvertit les références nommées, décimales & hex en caractères ; jamais envoyé.