ระบุการเข้ารหัสด้วย libreoffice --convert-to csv


11

ไฟล์ Excel สามารถแปลงเป็น CSV โดยใช้:

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

ทุกอย่างดูเหมือนจะทำงานได้ดี อย่างไรก็ตามการเข้ารหัสนั้นถูกตั้งค่าไว้ที่สิ่งที่สกปรก แทนที่จะเป็น UTF-8 mdash (-) ที่ฉันได้รับถ้าฉันทำ "บันทึกเป็น" ด้วยตนเองจาก LibreOffice Calc มันให้ฉัน \ 227 ( ) การใช้ไฟล์ใน CSV ทำให้ฉัน "ข้อความที่ไม่ใช่ ASCII แบบขยาย ASCII, มีบรรทัดที่ยาวมาก" ดังนั้นสองคำถาม:

  1. เกิดอะไรขึ้นที่นี่
  2. ฉันจะบอกให้ libreoffice เปลี่ยนเป็น UTF-8 ได้อย่างไร

ไฟล์เฉพาะที่ฉันพยายามที่จะแปลงเป็นที่นี่

คำตอบ:


8

เห็นได้ชัดว่า LibreOffice พยายามใช้ ISO-8859-1 ตามค่าเริ่มต้นซึ่งทำให้เกิดปัญหา เพื่อตอบสนองต่อรายงานข้อผิดพลาดนี้--infilterมีการเพิ่มพารามิเตอร์ใหม่ คำสั่งต่อไปนี้สร้างdash U + 2014 :

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

ฉันทดสอบมันด้วย LO 5.0.3.2 จากรายงานบั๊กดูเหมือนว่าเวอร์ชั่นแรกสุดที่มีตัวเลือกนี้คือ LO 4.4

ดูเพิ่มเติมที่: https://ask.libreoffice.org/en/question/13008/how-do-i-specify-an-input-character-coding-for-a-convert-to-command-line-usage/


ขอบคุณ! ยังไม่ประสบความสำเร็จ ด้วยบรรทัดคำสั่งนี้: libreoffice --headless --convert-to csv --infilter = CSV: 44,34,76,1 file.xlsx --outdir dir; มันยังคงมี 0x97 สำหรับ em em ฉันงงงัน ฉันใช้ LO 4.2.8.2 420m0 (รุ่น: 2) บน Ubuntu 14.04
Scott Deerwester

คุณอาจต้องอัพเกรดเป็น LO 4.4 หรือใหม่กว่าดังที่ได้กล่าวไว้ในคำตอบของฉัน
Jim K

1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvทำงานให้ฉัน การอ้างอิง
Adobe

คุณมีลิงค์ที่แสดงinfilterตัวเลือกเหล่านี้หรือไม่? ลิงก์ที่โพสต์โดย @Adobe ล้าสมัยแล้ว
kebs

--infilterดูเหมือนว่าจะเกี่ยวกับไฟล์อินพุตและนั่นอาจเป็นสาเหตุว่าทำไมคำสั่งของ @Adobe ทำงาน (อินพุต CSV) และคำสั่งของ OP (อินพุต XLSX) ไม่ได้เป็นเพียงการเดา
golimar

1

คุณสามารถลอง

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

ที่นี่คุณมีความช่วยเหลือโดยละเอียดเกี่ยวกับ


ขอบคุณสำหรับการตอบกลับ. ฉันยังไม่ได้รับมันเพื่อยอมรับโทเค็นเพิ่มเติม ฉันได้ลอง - เปลี่ยนเป็น "csv: ข้อความ - txt - csv (StarCalc): 44,34,76,1,, 0", - เปลี่ยนเป็น "csv: ข้อความ - txt - csv (StarCalc): 44,34,76,1,1 / 2/2/2/3/2/4/2/5/2/6/2/7/2/7/2/8/2/9/10/3 "และต่างๆ ชุดค่าผสมอื่น ๆ ข้อเสนอแนะใด ๆ
Scott Deerwester

csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"double :
quote

นั่นเป็นเพียงการสัมพันธ์กับเชลล์ แต่ฉันลองมันด้วยผลลัพธ์เดียวกัน
Scott Deerwester

นี่คือการใช้unoconvและโดยตรงsofficeสำหรับงานที่เกี่ยวข้องอาจช่วยได้
xae
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.