当CSV太大而无法加载到内存时,PHP将utf-16le转换为utf-8


PHP Convert utf-16le to UTF-8 when the CSV is too LARGE TO LOAD TO MEMORY

我正在尝试使用PHP修复CSV。

该文件也是非常大的500mb。我需要将它从utf-16le转换为utf-8。问题是我最初使用fgets((,发现它不适用于utf-16le。

如何在不使用fgets的情况下将此文件转换为UTF-8?文件太大,无法加载到内存中。

我已经在论坛上搜索过了,有很多方法可以转换编码,但对于这么大的使用utf-16le的文件来说就没有了。

这里的解决方案是通过exec、shell_exec或bactick运算符将此任务留给操作系统。

我用过:

shell_exec ( 'iconv -f utf-16le -t utf-8 1.csv > 2.csv' );

请勿将FGETS用于utf-16le!!!!!!!它将破坏文件的格式。