Especifique la codificación con libreoffice --convert-to csv

10

Los archivos de Excel se pueden convertir a CSV usando:

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

Todo parece funcionar bien. La codificación, sin embargo, se establece en algo inestable. En lugar de un UTF-8 mdash (-) que obtengo si hago un "guardar como" manualmente desde LibreOffice Calc, me da un \ 227 ( ). Usar el archivo en el CSV me da "Texto ASCII extendido no ISO, con líneas muy largas". Entonces, dos preguntas:

  1. ¿Qué demonios está pasando aquí?
  2. ¿Cómo le digo a libreoffice que convierta a UTF-8?

El archivo específico que estoy tratando de convertir está aquí .

Scott Deerwester
fuente

Respuestas:

7

Aparentemente, LibreOffice intenta usar ISO-8859-1 por defecto, lo que está causando el problema. En respuesta a este informe de error , --infilterse ha agregado un nuevo parámetro . El siguiente comando produce U + 2014 em dash :

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

Probé esto con LO 5.0.3.2. Según el informe de error, parece que la versión más antigua que contiene esta opción es LO 4.4.

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

Jim K
fuente
¡Gracias! Aún así no hubo éxito. Con esta línea de comando: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; todavía tiene 0x97 para el tablero de em. Estoy desconcertado Estoy ejecutando LO 4.2.8.2 420m0 (Build: 2) en Ubuntu 14.04.
Scott Deerwester
Probablemente necesite actualizar a LO 4.4 o posterior, como se menciona en mi respuesta.
Jim K
1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvtrabajó para mi. Referencia .
Adobe
¿Tiene un enlace donde infilterse enumeran estas opciones? El enlace publicado por @Adobe está desactualizado.
kebs
--infilterparece ser sobre el archivo de entrada y esa sería la razón por la cual el comando de @Adobe funciona (entrada CSV) y el comando del OP (entrada XLSX) no es, solo una suposición
golimar
1

Tu podrías intentar,

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

Aquí tienes una ayuda muy detallada sobre.

xae
fuente
Gracias por la respuesta. Todavía no consigo que acepte los tokens adicionales. Intenté --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 "y varios Otras combinaciones. ¿Alguna sugerencia?
Scott Deerwester
csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"doble cita" :"doble cita"
xae
Eso solo será relativo al shell, pero lo intenté de todos modos con los mismos resultados.
Scott Deerwester
Aquí está utilizando unoconvy directamente sofficepara una tarea relacionada, tal vez podría ayudar.
xae