Укажите кодировку с помощью libreoffice --convert-to csv

10

Файлы Excel могут быть преобразованы в CSV с помощью:

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

Кажется, все работает нормально. Кодировка, однако, настроена на что-то шаткое. Вместо UTF-8 mdash (-), который я получаю, если я делаю «сохранить как» вручную из LibreOffice Calc, он дает мне \ 227 ( ). Использование файла в CSV дает мне «Не-ISO расширенный текст ASCII, с очень длинными строками». Итак, два вопроса:

  1. Что здесь происходит?
  2. Как мне сказать libreoffice конвертировать в UTF-8?

Конкретный файл, который я пытаюсь конвертировать, находится здесь .

Скотт Дирвестер
источник

Ответы:

7

Очевидно, LibreOffice пытается использовать ISO-8859-1 по умолчанию, что является причиной проблемы. В ответ на это сообщение об ошибке--infilter был добавлен новый параметр . Следующая команда создает U + 2014 em dash :

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 для их тире. Я сбит с толку. Я использую LO 4.2.8.2 420m0 (сборка 2) в Ubuntu 14.04.
Скотт Дирвестер
Возможно, вам нужно обновить до LO 4.4 или новее, как указано в моем ответе.
Джим К
1
loffice --convert-to xlsx --infilter=csv:44,34,76 input.csvработал на меня. Ссылка .
Adobe
У вас есть ссылка, где перечислены эти infilterопции? Ссылка, размещенная @Adobe, давно устарела.
Кебс
--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 

Здесь у вас есть очень подробная справка о.

XAE
источник
Спасибо за ответ. Я до сих пор не могу принять дополнительные токены. Я пробовал --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 "и различные другие комбинации. Какие-либо предложения?
Скотт Дирвестер
csv:"Text - txt - csv (StarCalc)":"44,34,0,1,,0", csv :"двойные кавычки" :"двойные кавычки"
xae
Это будет только относительно оболочки, но я все равно попробовал с теми же результатами.
Скотт Дирвестер
Здесь используют unoconvи непосредственно sofficeдля связанной задачи, может быть, может помочь.
xae