0

我在运行 PHP 5.6 的受限服务器上使用 PHPExcel。

我尝试将一些日文字符包含在 CSV 和 Excel 输出中。鉴于在 HTML 或 PDF 中也有可能具有相同的输出,我正在使用 PHPExcel 构建所有数据,并根据请求更改编写器。

通过使用导出为 Excel 文件,我设法让 CSV 导出在 Excel 中成功打开,$objWriter->setUseBOM(true)但我将日语字符替换为废话,例如:

éÂÂä¿¡ãÂÂãÂÂãÂÂIDã¡ã¼ã«ã«IDã®è¨Âè¼ÂãÂÂãªãÂÂ

从我读过的内容来看,我最好的选择是将字符串转换为 UTF-16LE,但是,我无法访问mb_stringoriconv并且我正在努力寻找如何解决这个问题。我想知道 Excel2007 是否会出现同样的问题,但我无法访问php_zipzlib无法使用 PCLZip。我想我完蛋了。

有谁知道如何让 Excel 正确解释这些字符?

4

1 回答 1

0

就我而言,问题是缺少mb_convert_encodingiconv在服务器上。没有这些,从 UTF-8 到 Biff8(请参阅 参考资料PHPExcel_Shared_String::UTF8toBIFF8UnicodeLong)的编码不会正确发生。

在这种情况下PHPExcel_Shared_String::ConvertEncoding,只需返回原始字符,这在 Biff8 中没有意义 - 因此遇到了问题。

需要编写一个独立的转换器,这是可能的,但对于这种我们可以简单地回退到 CSV 的特殊情况来说,这是多余的。如果其他人遇到此问题,我将首先检查是否存在,mb_convert_encoding或者iconv,如果可能,安装它们。

于 2017-06-07T09:12:21.397 回答