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.