L'enregistrement d'un fichier dans un type CSV dans Excel supprime toujours la nomenclature

15

J'ai essayé de trouver une solution / explication raisonnable (sans succès) pour savoir pourquoi Excel par défaut supprime la nomenclature lors de l'enregistrement d'un fichier au type CSV.

Veuillez me pardonner si vous trouvez que c'est un double de cette question. Cela gère la lecture des fichiers CSV avec un codage non ASCII, mais cela ne couvre pas la sauvegarde du fichier (c'est là que réside le plus gros problème).

Voici ma situation actuelle (que je vais rassembler est courante parmi les logiciels localisés traitant des caractères Unicode et un format CSV):

  • Nous exportons les données au format CSV en utilisant UTF-16LE, garantissant que la nomenclature est définie (0xFFFE). Nous validons une fois le fichier généré avec un éditeur hexadécimal pour nous assurer qu'il a été correctement défini.

  • Ouvrez le fichier dans Excel (pour cet exemple, nous exportons des caractères japonais) et constatez qu'Excel gère le chargement du fichier avec l'encodage correct.

  • Les tentatives d'enregistrement de ce fichier vous inviteront avec un message d'avertissement indiquant que le fichier peut contenir des fonctionnalités qui peuvent ne pas être compatibles avec le codage Unicode, mais vous demande si vous souhaitez quand même enregistrer.

  • Si vous sélectionnez la boîte de dialogue Enregistrer sous, il vous sera immédiatement demandé d'enregistrer le fichier en tant que "Texte Unicode" plutôt qu'en CSV. Si vous sélectionnez l'extension "CSV" et enregistrez le fichier, il supprime la nomenclature (évidemment avec tous les caractères japonais).

Pourquoi cela arriverait-il? Existe-t-il une solution à ce problème, ou s'agit-il d'un «bug» / limitation connu d'Excel?

De plus (comme problème secondaire), il semble qu'Excel, lors du chargement de fichiers CSV codés UTF-16LE, n'utilise que des délimiteurs TAB. Encore une fois, est-ce un autre «bug» / limitation connu d'Excel?

rickp
la source

Réponses:

6

Il n'y a pas de réponses polies aux questions du formulaire "Pourquoi Excel fait-il X?".

Pourquoi n'adoptez-vous pas simplement "Enregistrer au format Unicode" comme format de transfert standard? Excel Save as garantit qu'il y a une nomenclature, utilise TAB comme délimiteur, cite les champs comme CSV ...

Soit dit en passant, vous ne "sélectionnez pas l'extension CSV". Vous avez DEUX choix - format et extension. Essayez d'enregistrer en tant que texte unicode dans la zone «Enregistrer en tant que type» et modifiez manuellement l'extension dans la zone «Nom de fichier» en csv. Quittez ensuite Excel et double-cliquez sur le nom du fichier dans l'Explorateur Windows. S'ouvre bien. Essayez-le.

Mise à jour pour discuter des commentaires d'OP :

  • "Enregistrer en tant que texte Unicode" (dans Excel 2007) enregistrera toujours votre fichier en tant qu'extension de texte (je ne peux pas parler pour les versions précédentes ou plus récentes). C'est l'idée de "Enregistrer comme type" ...

=> Veuillez lire attentivement ce que j'ai écrit ci-dessus et l'essayer par vous-même. Il enregistrera toujours votre fichier avec une extension TXT à moins que vous ne le remplaciez : supprimez le txtdans la zone 'Nom du fichier' et tapez csv.

  • Pour clarifier votre "Excel Enregistrer sous pour s'assurer qu'il y a une nomenclature", est incorrect.

=> "Enregistrer en tant que texte Unicode " garantit la présence d'une nomenclature UTF-16LE à l'avant du fichier. Essayez-le et voyez.

  • C'est la raison pour laquelle j'ai posé une question en premier lieu! Si j'ouvre un fichier au format CSV qui contient une nomenclature pour indiquer que mon fichier d'encodage est UFT-16LE et que je modifie ce fichier via Excel, je m'attends à ce que lorsque j'enregistre ce fichier, l'encodage reste intact ...

=> et vos attentes ne sont pas satisfaites, car Excel ne conserve aucune information sur les fichiers CSV d'entrée. Il n'y a aucun moyen de le forcer à faire ce que vous voulez faire. Donc, vous abandonnez ou essayez autre chose, comme ce que je suggère.

  • Ce qui serait vraiment bien, c'est que quelqu'un qui a déjà rencontré ces problèmes, donnez-nous votre avis s'il vous plaît.

=> J'ai rencontré ces problèmes, avec les données chinoises et Excel 1997, il y a des années. J'ai, avant de répondre à votre question, vérifié avec Excel 2003 et Excel 2007 qu'Excel se comportait toujours mal. J'ai vérifié que la solution de contournement "enregistrer sous type = texte Unicode, extension = CSV" fonctionne effectivement. J'ai fourni mes idées.

John Machin
la source
1
"Enregistrer en tant que texte Unicode" (dans Excel 2007) enregistrera toujours votre fichier en tant qu'extension de texte (je ne peux pas parler pour les versions précédentes ou plus récentes). C'est l'idée de "Save as type" ... Pour clarifier votre "Excel Save as pour s'assurer qu'il y a une nomenclature", c'est incorrect. C'est la raison pour laquelle j'ai posé une question en premier lieu! Si j'ouvre un fichier au format CSV qui contient une nomenclature pour indiquer que mon fichier d'encodage est UFT-16LE et que je modifie ce fichier via Excel, je m'attends à ce que lorsque j'enregistre ce fichier que l'encodage reste intact ... Ce qui serait vraiment sympa, c'est que quelqu'un qui a déjà rencontré ces problèmes, donnez-nous votre avis s'il vous plaît.