libreoffice --convert-to csvを使用してエンコードを指定します。

libreoffice --convert-to csvを使用してエンコードを指定します。

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

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

すべてがうまくいくようです。ところで、エンコーディング設定に奇妙な点があります。 UTF-8 mdash(—)の代わりにLibreOffice Calcで手動で「別名で保存」すると、\ 227(�)が表示されます。使用文書CSVの内容に「非ISO拡張ASCIIテキスト、行長」が表示されます。したがって、2つの質問があります。

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

変換する特定のファイルは次のとおりです。ここ

答え1

明らかに、LibreOfficeはデフォルトでISO-8859-1を使用しようとするので、問題が発生します。 このバグレポートに答えてください。--infilter、新しいパラメータが追加されました。次のコマンドはU+2014ダッシュ:

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/

答え2

試してみてください。

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

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

関連情報