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í .

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/


¡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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.