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.