Aller au contenu
Convertube

Fichiers CSV : le format sans types, sans encodage et sans comité

Ce qu’est vraiment un CSV, pourquoi un même fichier s’ouvre différemment selon le tableur et ce que disent les règles de guillemets. Convertir, sans envoi.

En bref

Type
Documents
Extensions
.csv
Type MIME
text/csv

Un fichier .csv est un fichier texte. Pas d’en-tête, pas de version, aucune information de type et rien de binaire — ouvrez-en un dans le Bloc-notes et vous en voyez chaque octet. Chaque ligne est une rangée, et quelque chose sépare les champs. C’est là tout le format, et c’est pourquoi tout peut en écrire un et pourquoi deux programmes ne s’accordent jamais sur ce qu’il signifie.

Lire la suite

Il a vécu vingt-cinq ans sans spécification. La RFC 4180 est arrivée en 2005, et elle est explicitement informative plutôt que normative — elle décrit ce que font la plupart des implémentations au lieu de dire à quiconque quoi faire. Ce qu’elle tranche, en revanche, ce sont les guillemets : un champ contenant le séparateur, un guillemet ou un saut de ligne est entouré de guillemets doubles, et un guillemet à l’intérieur d’un tel champ est écrit deux fois. Cette règle fait la différence entre « Widget, large » en une cellule ou en deux, et c’est celle que sautent les analyseurs naïfs.

Le séparateur n’est pas forcément une virgule. Un tableur fonctionnant dans une langue qui écrit les décimales 1,5 ne peut pas aussi utiliser la virgule pour séparer les champs : Excel y exporte donc des points-virgules — sur la même machine, depuis le même menu, produisant un fichier que le pays voisin ne peut pas ouvrir. Les exports de bases de données utilisent souvent des tabulations. Tout outil qui lit bien le CSV devine le séparateur à partir des premières lignes, et c’est ce que fait aussi ce site.

Il n’y a pas non plus de déclaration d’encodage, et c’est là que les données se perdent réellement. Un CSV de noms chinois enregistré par un programme et ouvert par un autre revient sous forme de caractères illisibles, parce que l’un supposait de l’UTF-8 et l’autre la page de codes du système. Et comme chaque champ est du texte sans type, un tableur refait ses suppositions à l’importation : les zéros initiaux disparaissent des références, les longs identifiants passent en notation scientifique, et tout ce qui ressemble à une date en devient une. Le fichier était correct ; c’est sa lecture qui ne l’était pas.

Convertir CSV vers d’autres formats

FAQ : CSV

Un CSV est-il simplement un fichier texte ?

Oui, entièrement. Pas de conteneur, pas de compression, rien de binaire. N’importe quel éditeur de texte l’ouvre, et ce que vous voyez est ce qu’il contient.

Pourquoi mon CSV utilise-t-il des points-virgules ?

Parce qu’il a été exporté dans une langue où la virgule sert de séparateur décimal, et ne pouvait donc pas aussi séparer les champs. C’est toujours un CSV, et tout lecteur digne de ce nom détecte le séparateur au lieu de le présumer.

Pourquoi mes zéros initiaux ont-ils disparu ?

Parce que le CSV ne stocke aucun type et que le tableur a deviné. « 007 » ressemble à un nombre, il est donc devenu 7. Le fichier n’avait rien d’anormal — c’est l’importation qui a décidé. La plupart des tableurs permettent de définir une colonne comme texte à l’importation, et c’est la seule solution fiable.

Pourquoi mon texte chinois est-il illisible ?

Parce que le fichier n’indique pas son encodage, et que le programme qui l’ouvre a deviné autrement que celui qui l’a écrit. Enregistrer en UTF-8 avec une marque d’ordre des octets (BOM) permet à Excel de le lire correctement, au prix d’un marqueur que d’autres outils affichent comme des caractères parasites.

Puis-je convertir un CSV en PDF ici ?

Oui. Il est analysé comme un CSV au lieu d’être simplement découpé aux virgules, si bien que les champs entre guillemets sont préservés, et les colonnes sont dimensionnées selon leur contenu, avec la ligne d’en-tête en gras. Le résultat sert à lire et à imprimer — rien dans un PDF ne peut être trié ni additionné.

Et la conversion en Excel ?

Inutile : tous les tableurs ouvrent directement un CSV, et convertir d’abord ne fait qu’ajouter une étape où les types sont devinés. La conversion qui existe ici va dans l’autre sens — PDF en Excel, qui reconstruit un tableau à partir d’une page qui n’en a jamais enregistré.