Spécifiez l'encodage avec libreoffice --convert-to csv


10

Les fichiers Excel peuvent être convertis en CSV en utilisant:

$ libreoffice --convert-to csv --headless --outdir dir file.xlsx

Tout semble bien fonctionner. L'encodage, cependant, est réglé sur quelque chose de chancelant. Au lieu d'un mdash UTF-8 (-) que j'obtiens si je fais un "enregistrer sous" manuellement depuis LibreOffice Calc, cela me donne un \ 227 ( ). L'utilisation du fichier sur le CSV me donne "du texte ASCII étendu non ISO, avec de très longues lignes". Donc, deux questions:

  1. Que se passe-t-il ici?
  2. Comment dire à libreoffice de convertir en UTF-8?

Le fichier spécifique que j'essaie de convertir est ici .

Réponses:


7

Apparemment, LibreOffice essaie d'utiliser ISO-8859-1 par défaut, ce qui cause le problème. En réponse à ce rapport de bogue , un nouveau paramètre --infiltera été ajouté. La commande suivante produit U + 2014 em dash :

libreoffice  --convert-to csv --infilter=CSV:44,34,76,1 --headless --outdir dir file.xlsx

J'ai testé cela avec LO 5.0.3.2. D'après le rapport de bogue, il semble que la première version contenant cette option soit LO 4.4.

Voir également: https://ask.libreoffice.org/en/question/13008/how-do-i-specify-an-input-character-coding-for-a-convert-to-command-line-usage/


Merci! Mais toujours pas de succès. Avec cette ligne de commande: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; il a toujours 0x97 pour le tiret em. Je suis déconcerté. J'utilise LO 4.2.8.2 420m0 (Build: 2) sur Ubuntu 14.04.
— Scott Deerwester

Vous devrez probablement mettre à niveau vers LO 4.4 ou plus récent, comme mentionné dans ma réponse.
— Jim K

1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvtravaillé pour moi. Référence .
— Adobe

Avez-vous un lien où ces infilteroptions sont répertoriées? Le lien publié par @Adobe est obsolète depuis longtemps.
— kebs

--infiltersemble concerner le fichier d'entrée et c'est pourquoi la commande @Adobe fonctionne (entrée CSV) et la commande OP (entrée XLSX) ne fait pas - juste une supposition
— golimar

1

Tu pourrais essayer,

    $ libreoffice --convert-to \
    > csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0" \
    > --headless --outdir dir file.xlsx 

Ici , vous avez une aide très détaillée sur.


Merci pour la réponse. Je n'arrive toujours pas à accepter les jetons supplémentaires. J'ai essayé --convert-to "csv: Text - txt - csv (StarCalc): 44,34,76,1,, 0", --convert-to "csv: Text - txt - csv (StarCalc): 44,34,76,1,1 / 2/2/2/3/2/4/2/5/2/6/2/7/2/8/2/9/1/10/3 "et divers autres combinaisons. Aucune suggestion?
— Scott Deerwester

csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"double quoted" :"double quoted"
— xae

Cela ne sera que relatif au shell, mais je l'ai quand même essayé avec les mêmes résultats.
— Scott Deerwester

Voici utiliser unoconvet directement sofficepour une tâche connexe, peut-être pourrait aider.
— xae
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.