Correcteur d’accents cassés
Quand é devient é et l’apostrophe ’, les lettres ne sont généralement pas perdues. Quelque chose les a lues avec la mauvaise table de caractères. Collez le texte et nous le relisons dans le bon sens.
Texte réparé
réparé meilleure hypothèse, à vérifier perdu, à retaper · Pointez un mot surligné, ou touchez-le, pour voir les caractères d’origine.
La réparation se fait dans votre navigateur. Votre texte n’est envoyé nulle part.
Une lettre, deux façons de la lire
Un fichier ne contient pas de lettres. Il contient des nombres appelés octets et un encodage est la table qui dit quel nombre représente quel caractère. Presque tout ce qui s’écrit aujourd’hui utilise UTF-8, où les lettres simples prennent un octet, les lettres accentuées en prennent deux et les signes typographiques comme les guillemets courbes ou le signe de l’euro en prennent trois.
Windows-1252 est une table plus ancienne où chaque caractère tient sur exactement un octet. Donnez un texte UTF-8 à un programme qui le lit avec cette ancienne table et chaque octet ressort comme un caractère à part. Les deux octets de é (C3 A9) apparaissent sous la forme à et ©. Ce dégât porte un nom emprunté au japonais, mojibake et vous l’avez sûrement croisé sous l’une de ces formes.
| Écrit | Affiché | Où vous le croisez |
|---|---|---|
| é è | é è | café, crème |
| ü ö ß | ü ö ß | Zürich, Köln, Straße |
| ñ | ñ | señor, España |
| ã ç | ã ç | São Paulo, ação |
| ø å | ø Ã¥ | København, Århus |
| ’ “ — | ’ “ — | l’heure, citations, tirets |
| € | € | prix |
Comment se fait la réparation
L’outil parcourt votre texte et s’arrête à chaque suite de caractères de la moitié haute de Windows-1252. Il remet chacun en l’octet d’où il vient, puis vérifie si ces octets forment un caractère UTF-8 valide.
Valide veut dire un octet de tête entre C2 et F4 suivi du bon nombre d’octets de continuation (80 à BF), sans forme trop longue ni valeur de substitution. Si c’est le cas, la suite est remplacée par le caractère qu’elle code. Sinon, rien ne change. Ce test protège aussi le texte correctement écrit. Le é d’un « café » sain est un seul octet en Windows-1252 et un octet seul ne peut jamais passer pour une paire UTF-8.
Un texte abîmé, enregistré puis abîmé de nouveau montre des chaînes plus longues comme é. L’outil répète la passe jusqu’à cinq fois, en retirant une couche à chaque tour, jusqu’à ce que le texte ne change plus.
Lire les trois surlignages
- Réparé
- Les octets se sont décodés proprement, ces changements sont donc sûrs. Pointez le mot pour voir ce qu’il a remplacé.
- Meilleure hypothèse, à vérifier
- Il manquait un octet et l’outil a comblé le trou. Il y a deux cas.
Ãsuivi d’une espace est lu commeà, parce que le deuxième octet de cette lettre (A0) est aussi l’espace insécable et qu’il est souvent aplati en espace ordinaire. Unâ€seul est lu comme un guillemet courbe fermant, parce que son troisième octet (9D) n’a pas de caractère en Windows-1252 et tend à disparaître. L’outil ne fait ces hypothèses que lorsque le texte montre d’autres signes clairs de mojibake. - Perdu, à retaper
- Un
�, ou un point d’interrogation coincé entre deux lettres comme dansr?sum?. Un programme a remplacé le caractère avant l’enregistrement et il ne reste aucun octet à décoder. L’outil marque l’endroit et vous fournissez la lettre.
Un  isolé devant une espace est la première moitié d’une espace insécable. L’outil le retire et montre l’espace qui reste avec une marque discrète, pour que vous la distinguiez d’une espace normale.
L’arrêter là où ça commence
Réparer un texte collé ne soigne que le symptôme. Quelque part en amont, un programme écrit en UTF-8 et un autre n’en a pas été informé. Voici les endroits habituels.
- Un CSV ouvert dans Excel
- Un double-clic sur un CSV et Excel suppose l’ancienne table Windows. Passez plutôt par Données, À partir du texte/CSV et réglez l’origine du fichier sur
65001: Unicode (UTF-8). À l’export, choisissez « CSV UTF-8 (délimité par des virgules) ». - Une base de données MySQL ou MariaDB
- Des colonnes déclarées
latin1qui contiennent des octets UTF-8, ou un dump importé avec le mauvais--default-character-set. Les tables et la connexion doivent toutes deux utiliserutf8mb4. - Une page web
- Mettez
<meta charset="utf-8">en premier dans le<head>et faites envoyer par le serveurContent-Type: text/html; charset=utf-8. - Un e-mail ou un fichier texte
- Pour un e-mail, l’en-tête
Content-Type: text/plain; charset=UTF-8. Pour un fichier, enregistrez en UTF-8 depuis le menu « Enregistrer avec l’encodage » de l’éditeur.
Convertir toute une base de données n’est pas le même travail que corriger un paragraphe. Faites une sauvegarde complète, lancez la conversion sur une copie et comparez les lignes avant de toucher au site en ligne. Une conversion appliquée à un texte déjà correct l’abîme.
Ce qu’il ne peut pas récupérer
L’outil traite un seul accident, qui se trouve être de loin le plus courant : de l’UTF-8 lu comme du Windows-1252 ou du Latin-1. Toutes les langues sont couvertes, grec et cyrillique compris, tant que c’était bien cette confusion. Les autres paires sont hors de portée, comme Mac Roman (où é apparaît sous la forme √©), Windows-1251 et Shift-JIS. L’hypothèse qui transforme à plus une espace en à convient à l’italien, au portugais et aux autres langues où cette lettre est un mot. Dans tout autre texte, vérifiez-la.
Questions fréquentes
Pourquoi é s’affiche-t-il é ?
Le texte a été enregistré en UTF-8, où é fait deux octets, puis ouvert en Windows-1252, où chaque octet est un caractère à part. Les deux octets s’affichent à et ©. Rien n’est perdu à ce stade, c’est pourquoi on peut inverser le processus.
Que signifie ’ dans mon texte ?
C’est une apostrophe courbe (’). Ce signe prend trois octets en UTF-8 et chacun a été affiché séparément. Le même accident transforme les guillemets ouvrants en “ et les tirets longs en —.
Pourquoi y a-t-il un  avant les espaces ou avant £ ?
L’espace insécable fait les deux octets C2 A0 et le signe livre fait C2 A3. Lu avec la mauvaise table, le premier octet devient un  visible. L’outil le retire et garde le caractère qui suit.
Peut-il corriger les points d’interrogation et les losanges noirs (�) ?
Non. Ils apparaissent quand un programme n’a pas pu représenter un caractère et l’a remplacé avant l’enregistrement, si bien que les octets d’origine ont disparu. L’outil surligne chacun d’eux et vous le retapez.
Comment corriger les caractères cassés sur tout un site WordPress ?
Vérifiez que DB_CHARSET dans wp-config.php vaut utf8mb4 et que les tables n’utilisent pas une collation latin1. S’il ne s’agit que de quelques pages, collez chaque texte ici et remettez la version réparée. Pour toute la base de données, faites d’abord convertir les tables sur une copie, avec une sauvegarde sous la main.
Le texte que je colle est-il envoyé à un serveur ?
Non. Un script de votre navigateur fait le décodage et la page n’envoie aucune requête avec votre texte.