web-dev-qa-db-fra.com

Les fichiers CSV UTF-8 doivent-ils contenir une nomenclature (marque d'ordre des octets)?

Notre logiciel métier permet à l'utilisateur d'enregistrer certaines données sous CSV . Puisqu'il existe de nombreux formats différents (tous appelés "CSV") dans la nature, nous tentons de déterminer à quoi devrait ressembler le "format par défaut".

  • En ce qui concerne les séparateurs de ligne/champ et l'échappement, il existe une norme que nous pouvons utiliser: RFC 418 .

  • Concernant l'encodage de texte, TF-8 semble être apparu au cours de la dernière décennie comme le "format de fichier texte par défaut", nous allons donc l'utiliser.

La seule question qui reste ouverte est: devrions-nous ajouter un BOM au début ou non? J'ai lu plusieurs opinions et avantages/inconvénients sur l'utilisation des nomenclatures en général, mais existe-t-il une recommandation "officielle" ou au moins une sorte de consensus communautaire sur l'utilisation des nomenclatures dans les fichiers CSV?

38
Heinzi

Pas pour UTF-8 , mais voir les différentes mises en garde dans les commentaires.

Ce n'est pas nécessaire (UTF-8 n'a pas d'ordre d'octets) contrairement à UTF-16/32 et n'est pas recommandé dans le standard Unicode . Il est également assez rare de voir UTF-8 avec BOM "à l'état sauvage", donc à moins que vous n'ayez une raison valable (par exemple, comme commenté, vous travaillerez avec un logiciel qui attend la BOM), je recommanderais l'approche sans BOM .

Wikipedia mentionne certains logiciels principalement Microsoft qui forcent et attendent une nomenclature, mais à moins que vous ne travailliez avec eux, ne l'utilisez pas.

55
Kayaman

Il n'y a toujours pas de convention AFAIK répandue, bien que l'UTF-8 soit maintenant généralement accepté.

La nomenclature est un horrible artefact:

Il est invisible (espace de largeur nulle).

Certains logiciels peuvent casser le nom de la première colonne ne contenant pas uniquement des lettres, mais cette étrange nomenclature devant.

Il est possible que la ligne d'en-tête soit copiée pour les lignes de valeur corrompant la première valeur.

Certains logiciels Windows ont uniquement besoin de faire la distinction entre l'un des encodages ANSI utilisés par cette machine Windows locale et UTF-8. Bloc-notes, Excel.

Le plus triste, c'est que l'on devrait soutenir la nomenclature. Peut-être en option.

Utilisez un schéma de dénomination pour les fichiers (...- utf8.txt, ...- utf8bom.txt).


Dans de nombreux cas, nous pourrions utiliser HTML comme alternative d'exportation. Cela permet de définir l'encodage dans le fichier. Une caractéristique supplémentaire est la coloration d'arrière-plan/de premier plan des lignes et des cellules. Ce qui augmente la qualité de l'exportation.

8
Joop Eggen