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.