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


11

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

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

一切似乎都正常。但是,编码设置为不正确的。代替了我从LibreOffice Calc手动执行“另存为”时得到的UTF-8破折号(—),它给了我\ 227( )。在CSV上使用文件会给我“非ISO扩展ASCII文本,行很长”。因此,有两个问题:

  1. 这到底是怎么回事?
  2. 我如何告诉libreoffice转换为UTF-8?

我要转换的特定文件在这里

Answers:


8

显然,LibreOffice默认尝试使用ISO-8859-1,这导致了问题。 为响应此错误报告--infilter添加了一个新参数。以下命令产生U + 2014 em破折号

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/


谢谢!仍然没有成功。使用以下命令行:libreoffice --headless-转换为csv --infilter = CSV:44、34、76、1 file.xlsx --outdir dir; 它的破折号仍然是0x97。我很困惑。我在Ubuntu 14.04上运行LO 4.2.8.2 420m0(Build:2)。
Scott Deerwester '16

如我的回答所述,您可能需要升级到LO 4.4或更高版本。
吉姆K

1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csv为我工作。参考
Adobe

您是否有infilter列出这些选项的链接?@Adobe发布的链接早已过时。
kebs

--infilter似乎与输入文件有关,这就是为什么@Adobe的命令有效(CSV输入)而OP的命令(XLSX输入)却不起作用的原因-只是一个猜测
-golimar

1

你可以试试看

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

在这里,您可以获得非常详细的帮助。


谢谢回复。我仍然无法接受其他令牌。我试过--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“和各种其他组合。有什么建议么?
Scott Deerwester '16

csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0",csv :“双引号” :“双引号”
xae

那只是相对于外壳而言的,但是无论如何我都尝试过,但结果相同。
Scott Deerwester '16

这里正在使用unoconv直接soffice用于相关任务,可能会有所帮助。
西航
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.