Demander un accès Migrer mon calendrier
FR / EN bientôt
Les guides

Caractères bizarres après import : le piège UTF-8.

Â, ’, réunion… La double conversion d'encodage qui défigure les agendas français.

Auteur
Publié
Lecture
6 min
Catégorie
Encodage

En bref

  • Le « é » et le « ’ » ne sont pas une corruption aléatoire : c'est de l'UTF-8 valide relu comme du Windows-1252.
  • Le bug se produit quand un outil de la chaîne d'export/import oublie de déclarer l'encodage, ou ré-enregistre le fichier dans le mauvais jeu de caractères.
  • SoftHop migre de compte à compte sans jamais écrire de fichier ICS : aucune occasion de se tromper d'encodage.

Vous migrez votre agenda, et soudain la moitié de vos titres ressemblent à du bruit : réunion, d’accord, café. En français, où presque chaque phrase contient un accent ou une apostrophe, ce piège ne touche pas quelques événements : il les défigure tous. Bonne nouvelle : ce n’est pas aléatoire, et une fois qu’on comprend le mécanisme, c’est totalement évitable.

Ce que vous voyez vraiment

Voici les dégâts les plus courants sur un agenda français. Si vous reconnaissez ne serait-ce qu’une ligne, vous êtes face au même bug :

Vous aviez écritAprès importCe qui s’est passé
réunionréunionle « é » (octets C3 A9) relu en Windows-1252
l’équipel’équipeapostrophe courbe et accent, relus octet par octet
d’accordd’accordl’apostrophe courbe (U+2019, octets E2 80 99) éclatée en trois
café — 14hcafé — 14haccent et tiret cadratin, double-encodés ensemble

Le motif est toujours le même : un caractère « normal » remplacé par deux ou trois symboles qui commencent presque toujours par à ou â€. Ce n’est pas du hasard — c’est une signature.

Le mécanisme : une double conversion

Tout texte est, au fond, une suite d’octets. L’encodage est la convention qui dit quel octet représente quelle lettre. Deux conventions s’affrontent ici :

  • UTF-8 — le standard moderne, universel. Le « é » y est codé sur deux octets : C3 A9.
  • Windows-1252 / Latin-1 — un vieux jeu de caractères sur un seul octet. Le « é » y tient sur un octet : E9.

Le drame se joue en deux temps. Votre agenda est exporté correctement en UTF-8 : le « é » est bien C3 A9. Mais un outil de la chaîne — un script de découpe, un éditeur de texte mal configuré, un import qui n’a pas lu la bonne déclaration — croit lire du Windows-1252. Il interprète donc chacun des deux octets séparément :

anatomie d'un mojibake
Octets UTF-8 du « é » :     C3   A9
Relu en Windows-1252 :       Ã    ©
Résultat affiché :          « é »

L'apostrophe courbe « ’ » (U+2019) :
UTF-8 :                    E2   80   99
Relu en Windows-1252 :     â    €    ™
Résultat affiché :        « ’ »

C’est tout. Aucune donnée n’est perdue à ce stade — l’information est toujours là, simplement lue avec la mauvaise grille. C’est ce qu’on appelle un mojibake, et sa signature à / †trahit à chaque fois une lecture Windows-1252 d’un texte UTF-8.

D’où vient l’erreur, concrètement

Dans une migration d’agenda, trois coupables reviennent sans cesse :

  • La déclaration d’encodage manquante. Le fichier .ics est de l’UTF-8, mais rien ne le dit explicitement. L’outil d’import applique son réglage par défaut — souvent Windows-1252 sur les systèmes anciens.
  • Le passage par un tableur. Ouvrir puis ré-enregistrer un export via Excel ou un CSV intermédiaire est une cause classique : le tableur ré-encode dans son propre jeu de caractères local.
  • La découpe manuelle du fichier. Pour passer sous la limite de 1 Mo de Google, beaucoup ouvrent le .ics dans un éditeur et le recoupent — et un éditeur mal réglé ré-enregistre dans le mauvais encodage au passage.

Pourquoi un « rechercher-remplacer » ne suffit pas

La tentation est de corriger après coup : remplacer é par é, ’ par ’, et ainsi de suite. Ça marche pour les deux ou trois cas évidents, mais il existe des dizaines de combinaisons (chaque caractère accentué, chaque guillemet, tiret, espace insécable, emoji…), et certaines séquences sont ambiguës. Sur un agenda de plusieurs centaines d’événements, vous passerez à côté de cas, et vous risquez d’en casser d’autres qui étaient corrects. C’est un colmatage, pas une réparation.

Comment SoftHop l’évite, par construction

Le mojibake naît toujours d’un fichier qui transite entre deux outils sans porter son encodage. La parade la plus sûre, c’est de ne jamais produire ce fichier.

SoftHop ne fait pas d’export/import ICS : on lit les événements directement via l’API Google Agenda, où le texte est déjà de l’UTF-8 sans ambiguïté, et on les écrit sur le compte cible par la même API. Aucun fichier intermédiaire, aucun ré-enregistrement, aucune chaîne d’outils où un maillon peut se tromper de grille de lecture.


Si vous voyez déjà des à dans votre nouvel agenda, ne tentez pas de tout réparer à la main : repartez de la source, encore intacte, et migrez-la sans la faire transiter par un fichier. C’est tout l’intérêt d’une migration de compte à compte.

Calendar Hop

Ne réparez pas ce piège à la main.

SoftHop migre votre agenda Google de compte à compte, sans passer par un fichier ICS. Récurrences, exceptions, couleurs, invités — tout suit.

À lire ensuite

D'autres pièges, désamorcés.

Récurrences Guide

Vos événements récurrents disparaissent à l'import.

Pourquoi Google Agenda lit mal les RRULE — et comment reconstruire une série, exceptions comprises.

Visio Bientôt

Vos liens Meet cassent après migration.

Le lien hypertexte Meet ne migre pas. Pourquoi, et comment le préserver.

Diagnostic Bientôt

L'erreur « 0 sur 0 événements importés ».

Le silence qui fait croire que ça a marché. Diagnostic et correctif.

Bientôt

Prévenez-moi quand c'est prêt.

On vous envoie un mail, une seule fois, le jour du lancement.