使用 libreoffice --convert-to csv 指定编码

使用 libreoffice --convert-to csv 指定编码

Excel 文件可以使用以下方法转换为 CSV:

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

一切似乎都工作得很好。不过,编码设置有些奇怪。如果我从 LibreOffice Calc 手动“另存为”,我得到的不是 UTF-8 mdash (—),而是 \227 (�)。使用文件CSV 上的内容给了我“非 ISO 扩展 ASCII 文本,行很长”。那么,两个问题:

  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 

这里,你有非常详细的帮助。

相关内容