web-dev-qa-db-ja.com

libreoffice --convert-to csvでエンコーディングを指定する

Excelファイルは、次を使用してCSVに変換できます。

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

すべてがうまく機能しているように見えます。ただし、エンコーディングは不安定なものに設定されています。 LibreOffice Calcから「名前を付けて保存」を手動で行うと、UTF-8 mdash(—)の代わりに、¥227(�)が得られます。 CSVでfileを使用すると、「非ISO拡張ASCIIテキスト、非常に長い行」が表示されます。したがって、2つの質問:

  1. ここで一体何が起こっているのですか?
  2. LibreofficeにUTF-8に変換するように指示するにはどうすればよいですか?

私が変換しようとしている特定のファイルは here です。

10

どうやらLibreOfficeはデフォルトでISO-8859-1を使用しようとするため、問題が発生しているようです。 このバグレポートへの対応 、新しいパラメーター--infilter 追加されました。次のコマンドは + 2014 em dash を生成します:

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

これをLO 5.0.3.2でテストしました。バグレポートによると、このオプションを含む最も古いバージョンはLO 4.4です。

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

7
Jim K

あなたは試すことができます、

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

ここ 、非常に詳細なヘルプがあります。

1
xae