Encodage / GUIDE PRATIQUE

CSV UTF-8 et accents dans Excel : quand utiliser un BOM

Ajouter un BOM peut aider Excel à reconnaître un CSV UTF-8. Cela ne recrée pas des caractères déjà remplacés et ne transforme pas automatiquement n’importe quel fichier en UTF-8.

C3 89 74 C3 A9Été

Exemple illustratif · les données du guide sont reproductibles

Deux problèmes qui peuvent se ressembler

Comparez le même fichier dans un éditeur qui permet de choisir son encodage et dans Excel. Si café est correct dans le premier et devient café dans le second, les octets ont peut-être été interprétés avec une convention différente. Si le texte est déjà incorrect dans tous les outils, le problème peut avoir été enregistré en amont. L’apparence seule ne permet pas de déterminer exactement à quel moment il est apparu.

Gardez donc une copie intacte. Notez le logiciel qui produit l’export, l’encodage annoncé et le parcours d’ouverture utilisé. La bonne réparation dépend de ces informations. Remplacer à la main les caractères visibles peut cacher une erreur de lecture tout en abîmant des valeurs qui étaient correctes.

Ce que le BOM ajoute réellement

Un BOM UTF-8 est une petite signature au début du fichier. Pour l’exemple ci-dessous, les octets du mot café restent ceux de l’UTF-8 ; trois octets sont simplement placés avant le texte. Cette signature aide certains lecteurs à choisir le bon décodage, sans modifier les lettres du document.

texte = "café"
assert texte.encode("utf-8-sig") == (
    b"\xef\xbb\xbf" + texte.encode("utf-8")
)

Microsoft indique qu’un CSV UTF-8 enregistré avec BOM peut être ouvert normalement dans Excel, et propose l’import texte/CSV pour les autres cas. Le BOM n’est donc pas une obligation générale de l’UTF-8 : c’est un choix de compatibilité pour un destinataire et un parcours précis. Évitez de l’ajouter aveuglément à des fichiers destinés à un autre système.

Essayer l’import avant de réécrire le fichier

Si vous connaissez l’encodage du producteur, commencez par l’import texte/CSV d’Excel et contrôlez l’aperçu. Sélectionnez l’encodage annoncé lorsque ce choix est disponible. Vérifiez au moins une valeur accentuée, un caractère non latin si vos données en contiennent et un symbole comme €. Le support Microsoft sur les CSV UTF-8 décrit les voies d’import prévues.

Contrôlez aussi le séparateur : des accents corrects ne garantissent pas que les colonnes sont bien découpées. Inversement, des colonnes parfaites ne garantissent pas un bon décodage. Traitez ces deux paramètres séparément et notez la combinaison qui fonctionne. Pour un échange régulier, demandez au producteur une description explicite plutôt qu’une succession d’essais.

Créer une copie UTF-8 avec signature

Quand le fichier source est réellement en UTF-8, cette procédure Python produit une nouvelle copie avec BOM. Le nom de sortie est différent pour conserver l’original. Le codec utf-8-sig accepte à la lecture une signature initiale éventuelle et en écrit une au début du nouveau fichier. La documentation Python du codec précise ce comportement.

from pathlib import Path

source = Path("export.csv")
texte = source.read_text(encoding="utf-8-sig")
Path("export-excel.csv").write_text(
    texte, encoding="utf-8-sig"
)

Si la lecture lève UnicodeDecodeError, arrêtez ce chemin : le fichier n’est pas décodable ainsi. Ce signal n’identifie pas automatiquement l’encodage correct. Demandez celui du logiciel source. Ne choisissez pas un mode qui ignore les erreurs pour obtenir coûte que coûte un fichier qui s’ouvre.

Le BOM ne répare pas des caractères déjà perdus

Supposons que le contenu soit devenu caf? puis ait été enregistré. Ajouter une signature UTF-8 conservera le point d’interrogation : elle n’indique pas quelle lettre se trouvait là avant. De même, si un export a enregistré café comme texte réel, son encodage peut être parfaitement valide en UTF-8 tout en contenant une erreur de contenu.

Il faut alors repartir d’une source plus fiable ou comprendre la transformation exacte. Un convertisseur qui affiche « UTF-8 valide » établit seulement que la structure des octets est acceptable pour ce décodage. Il ne certifie ni la langue, ni l’orthographe, ni la fidélité à l’original. Ce sont deux niveaux de contrôle différents et complémentaires.

Valider une copie avec des valeurs sentinelles

Pour un export récurrent, choisissez quelques valeurs qui révèlent vite les erreurs : café, Noël, € et un nom réellement présent dans votre jeu de données. Comparez leur écriture avant et après le parcours complet. Vérifiez également le nombre d’enregistrements et les identifiants ; une conversion d’encodage ne doit pas changer le découpage métier du tableau.

Le diagnostic CSV local peut vérifier si les octets d’un petit fichier sont décodables en UTF-8 et signaler une signature initiale. Le texte collé, lui, a déjà été décodé par le navigateur : il ne permet pas de prouver l’encodage du fichier d’origine. Si Excel place encore tout dans une colonne, utilisez ensuite le guide du séparateur CSV.

PASSEZ À VOTRE ÉCHANTILLON

Les colonnes sont-elles bien lues ?

Comparez quatre séparateurs et repérez les lignes irrégulières. L’analyse reste dans votre navigateur.

Essayer le diagnostic ↗

Vos questions, concrètement

Un CSV UTF-8 doit-il toujours avoir un BOM ?

Non. Le BOM est une signature facultative en UTF-8. Son intérêt dépend du lecteur et du parcours d’ouverture, notamment pour certaines ouvertures directes dans Excel.

Ajouter un BOM peut-il réparer café ?

Pas à lui seul. Il aide un lecteur à choisir un décodage mais ne corrige pas un texte déjà mal transformé puis enregistré.

Pourquoi le texte collé ne prouve-t-il pas l’encodage ?

Le navigateur reçoit déjà une chaîne de caractères. Les octets du fichier original et leur décodage initial ne sont plus directement observables à partir de cette seule chaîne.

REMONTREZ AUX DOCUMENTATIONS

Sources et vérification

Les exemples et explications sont rédigés pour ce guide. Les références ci-dessous documentent les fonctions et comportements mentionnés.

Travaillez sur une copie du fichier et comparez le nombre de lignes avant et après chaque transformation. Les résultats peuvent dépendre de la version de votre logiciel et des options choisies. Notre méthode.

Continuez le diagnostic.

Tous les guides ↗