Specifica la codifica con libreoffice --convert-to csv


10

I file Excel possono essere convertiti in CSV usando:

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

Tutto sembra funzionare bene. La codifica, tuttavia, è impostata su qualcosa di instabile. Invece di un mdash UTF-8 (-) che ottengo se eseguo un "salvataggio con nome" manualmente da LibreOffice Calc, mi dà un \ 227 ( ). L'uso del file sul CSV mi dà "testo ASCII esteso non ISO, con linee molto lunghe". Quindi, due domande:

  1. Cosa diavolo sta succedendo qui?
  2. Come posso dire a libreoffice di convertire in UTF-8?

Il file specifico che sto cercando di convertire è qui .

Risposte:


7

Apparentemente LibreOffice tenta di utilizzare ISO-8859-1 per impostazione predefinita, il che sta causando il problema. In risposta a questa segnalazione di bug , --infilterè stato aggiunto un nuovo parametro . Il seguente comando produce un trattino U + 2014 :

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

Ho provato questo con LO 5.0.3.2. Dalla segnalazione di bug, sembra che la prima versione che contenga questa opzione sia LO 4.4.

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


Grazie! Ancora nessun successo però. Con questa riga di comando: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; ha ancora 0x97 per il trattino. Sono sconcertato. Sto eseguendo LO 4.2.8.2 420m0 (Build: 2) su Ubuntu 14.04.
— Scott Deerwester,

Probabilmente dovrai aggiornare a LO 4.4 o versioni successive, come indicato nella mia risposta.
— Jim K,

1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvha funzionato per me. Riferimento .
— Adobe,

Hai un link in cui infiltersono elencate queste opzioni? Il link pubblicato da @Adobe è obsoleto.
— kebs

--infiltersembra riguardare il file di input e questo sarebbe il motivo per cui il comando di @Adobe funziona (input CSV) e il comando dell'OP (input XLSX) non funziona - solo un'ipotesi
— golimar

1

Potresti provare,

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

Qui , hai un aiuto molto dettagliato su.


Grazie per la risposta. Non riesco ancora ad accettare i token aggiuntivi. Ho provato --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 "e vari altre combinazioni. Eventuali suggerimenti?
— Scott Deerwester,

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

Sarà solo relativo alla shell, ma l'ho provato comunque con gli stessi risultati.
— Scott Deerwester,

Qui stanno usando unoconve direttamente sofficeper un'attività correlata, forse potrebbe aiutare.
— xae,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.