Especifique a codificação com libreoffice --convert-to csv

10

Os arquivos do Excel podem ser convertidos para CSV usando:

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

Tudo parece funcionar muito bem. A codificação, no entanto, é definida como algo instável. Em vez de um mdash UTF-8 (-) que eu recebo se fizer um "salvar como" manualmente do LibreOffice Calc, ele me dará um \ 227 ( ). O uso do arquivo no CSV fornece "Texto ASCII estendido não ISO, com linhas muito longas". Então, duas perguntas:

  1. O que diabos está acontecendo aqui?
  2. Como eu digo ao libreoffice para converter para UTF-8?

O arquivo específico que estou tentando converter está aqui .

Scott Deerwester
fonte

Respostas:

7

Aparentemente, o LibreOffice tenta usar a ISO-8859-1 por padrão, o que está causando o problema. Em resposta a este relatório de erro , um novo parâmetro --infilterfoi adicionado. O comando a seguir produz U + 2014 em traço :

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

Eu testei isso com o LO 5.0.3.2. No relatório de erros, parece que a versão mais antiga que contém esta opção é LO 4.4.

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

Jim K
fonte
Obrigado! Ainda sem sucesso. Com esta linha de comando: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; ainda tem 0x97 para o traço em. Estou perplexo. Estou executando o LO 4.2.8.2 420m0 (Build: 2) no Ubuntu 14.04.
Scott Deerwester 02/02
Você provavelmente precisará atualizar para o LO 4.4 ou mais recente, conforme mencionado na minha resposta.
Jim K
1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvtrabalhou para mim. Referência .
Adobe
Você tem um link onde essas infilteropções estão listadas? O link publicado por @Adobe está desatualizado há muito tempo.
KEBS
--infilterparece ser sobre o arquivo de entrada e é por isso que o comando do @Adobe funciona (entrada CSV) e o comando do OP (entrada XLSX) não funciona - apenas um palpite
golimar
1

Você poderia tentar,

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

Aqui , você tem uma ajuda muito detalhada sobre.

xae
fonte
Obrigado pela resposta. Ainda não estou conseguindo aceitar os tokens adicionais. Eu tentei --convert-to "csv: Texto - txt - csv (StarCalc): 44,34,76,1,, 0", --convert-to "csv: Texto - 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 "e vários outras combinações. Alguma sugestão?
Scott Deerwester 02/02
csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"aspas duplas" :"aspas duplas"
xae 02/02
Isso só será relativo ao shell, mas tentei mesmo assim com os mesmos resultados.
Scott Deerwester 02/02
Aqui estão usando unoconve diretamente sofficepara uma tarefa relacionada, talvez possa ajudar.
Xae