Geben Sie die Codierung mit libreoffice --convert-to csv an

10

Excel-Dateien können mithilfe von:

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

Alles scheint gut zu funktionieren. Die Codierung ist jedoch auf etwas Wonky eingestellt. Anstelle eines UTF-8-MDash (-), den ich erhalte, wenn ich manuell von LibreOffice Calc ein "Speichern unter" durchführe, erhalte ich ein \ 227 ( ). Wenn ich eine Datei in der CSV verwende, erhalte ich "Nicht-ISO-Extended-ASCII-Text mit sehr langen Zeilen". Also zwei Fragen:

  1. Was um alles in der Welt passiert hier?
  2. Wie kann ich libreoffice anweisen, auf UTF-8 zu konvertieren?

Die spezifische Datei, die ich konvertieren möchte, ist hier .

Scott Deerwester
quelle

Antworten:

7

Anscheinend versucht LibreOffice standardmäßig, ISO-8859-1 zu verwenden, was das Problem verursacht. Als Antwort auf diesen Fehlerbericht wurde ein neuer Parameter --infilterhinzugefügt. Der folgende Befehl erzeugt U + 2014 em dash :

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

Ich habe dies mit LO 5.0.3.2 getestet. Aus dem Fehlerbericht geht hervor, dass die früheste Version, die diese Option enthält, LO 4.4 ist.

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

Jim K.
quelle
Vielen Dank! Immer noch kein Erfolg. Mit dieser Befehlszeile: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; es hat immer noch 0x97 für den em dash. Ich bin verblüfft. Ich verwende LO 4.2.8.2 420m0 (Build: 2) unter Ubuntu 14.04.
Scott Deerwester
Sie müssen wahrscheinlich auf LO 4.4 oder neuer aktualisieren, wie in meiner Antwort erwähnt.
Jim K
1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvarbeitete für mich. Referenz .
Adobe
Haben Sie einen Link, über den diese infilterOptionen aufgelistet sind? Der von @Adobe gepostete Link ist längst veraltet.
Kebs
--infilterEs scheint sich um die Eingabedatei zu handeln, und deshalb funktioniert der Befehl von @Adobe (CSV-Eingabe), und der Befehl des OP (XLSX-Eingabe) funktioniert nicht - nur eine Vermutung
Uhr
1

Du könntest es versuchen,

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

Hier haben Sie eine sehr detaillierte Hilfe zu.

xae
quelle
Danke für die Antwort. Ich bekomme es immer noch nicht, die zusätzlichen Token zu akzeptieren. Ich habe versucht --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 "und verschiedene andere Kombinationen. Irgendwelche Vorschläge?
Scott Deerwester
csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"doppelt zitiert" :"doppelt zitiert"
xae
Das wird nur relativ zur Shell sein, aber ich habe es trotzdem mit den gleichen Ergebnissen versucht.
Scott Deerwester
Hier verwenden unoconvund direkt sofficefür eine verwandte Aufgabe, könnte vielleicht helfen.
xae