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 .

Scott Deerwester
la source

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/

Jim K
la source
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.

xae
la source
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