HsOjo’s Blog

📒 A powerless rookie's tree hole.

unoconv转换Csv中文乱码问题

2020-06-2300 分钟
type
status
date
slug
summary
tags
category
icon
password

前言

最近在使用PHPSpreadsheet导出大量数据到Xlsx时,频繁出现各种问题;如内存溢出、数据丢失等。
后来更换导出格式为Csv,问题减少了,但是在Office中使用极其不友好;如不支持单元格格式、在不同系统中使用的编码不同可能会出现乱码的情况。
于是就有了这么一个折中的方案,PHP导出时使用Csv格式,导出完成后,使用unoconv将文件转换为Xlsx格式。
然而使用unoconv转换为Xlsx时,遇到了中文乱码的问题。

问题原因

经过多番测试发现,无论Csv采用GBK编码或是UTF-8编码,都会出现这个问题;但是乱码的内容有所不同。
同时使用不同系统下的Office打开Xlsx,得到的结果一致;这时基本可以判断乱码是因为LibreOffice在读入Csv内容时使用了错误的编码。

解决方案

查看unoconv的帮助后发现有这么一项参数可用于设置读入相关选项。
那么再查看unoconv文档后发现“Filter_Options”的填写格式。
至此,问题解决。

下一篇

初次团队协作整活全流程记录

Loading...