Tentukan penyandian dengan libreoffice --convert-to csv

10

File Excel dapat dikonversi ke CSV menggunakan:

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

Semuanya tampak berfungsi dengan baik. Pengkodean, bagaimanapun, diatur ke sesuatu yang miring. Alih-alih UTF-8 mdash (-) yang saya dapatkan jika saya melakukan "save as" secara manual dari LibreOffice Calc, itu memberi saya \ 227 ( ). Menggunakan file pada CSV memberi saya "Non-ISO extended-ASCII text, dengan garis yang sangat panjang". Jadi, dua pertanyaan:

  1. Apa yang sebenarnya terjadi di sini?
  2. Bagaimana cara saya memberi tahu libreoffice untuk mengonversi ke UTF-8?

File spesifik yang saya coba konversi ada di sini .

Scott Deerwester
sumber

Jawaban:

7

Rupanya LibreOffice mencoba menggunakan ISO-8859-1 secara default, yang menyebabkan masalah. Menanggapi laporan bug ini , parameter baru --infiltertelah ditambahkan. Perintah berikut menghasilkan tanda hubung U + 2014 :

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

Saya menguji ini dengan LO 5.0.3.2. Dari laporan bug, sepertinya versi paling awal yang mengandung opsi ini adalah LO 4.4.

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

Jim K.
sumber
Terima kasih! Masih belum berhasil. Dengan baris perintah ini: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; masih punya 0x97 untuk dasbor em. Saya bingung. Saya menjalankan LO 4.2.8.2 420m0 (Build: 2) di Ubuntu 14.04.
Scott Deerwester
Anda mungkin perlu meningkatkan ke LO 4.4 atau lebih baru, seperti yang disebutkan dalam jawaban saya.
Jim K
1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvbekerja untukku. Referensi .
Adobe
Apakah Anda memiliki tautan tempat infilteropsi ini dicantumkan? Tautan yang diposting oleh @Adobe sudah lama usang.
kebs
--infiltertampaknya tentang file input dan itu akan menjadi mengapa perintah @Adobe bekerja (input CSV) dan perintah OP (input XLSX) tidak - hanya menebak
golimar
1

Kamu bisa mencoba,

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

Di sini , Anda memiliki bantuan yang sangat terperinci.

xae
sumber
Terima kasih balasannya. Saya masih belum mendapatkannya untuk menerima token tambahan. Saya sudah mencoba --convert-to "csv: Text - txt - csv (StarCalc): 44,34,76,1,, 0", --convert-to "csv: Teks - 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 "dan berbagai kombinasi lainnya. Ada saran?
Scott Deerwester
csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"dikutip ganda" :"dikutip ganda"
xae
Itu hanya akan relatif terhadap shell, tapi saya tetap mencobanya dengan hasil yang sama.
Scott Deerwester
Di sini menggunakan unoconvdan langsung sofficeuntuk tugas terkait, mungkin bisa membantu.
xae