编码问题,同时通过PHP COM读取Excel文件

我正在阅读一个Excel电子表格与PHP COM实用程序,一切工作正常,除了有一些在Excel文件中的单元格具有不同的语言数据。 当我通过PHP Com读取这些数据时,它显示为???????

$ExlApp = new COM ( "Excel.Application" ); $workbook = $ExlApp->Workbooks->Open ( 'f:\dev\htdocs\excel\testfile.xlsx' ); $worksheet = $workbook->worksheets ( 1 ); $done = false; $row_index = 1; while ( $done == false ) { $english = $worksheet->cells ( $row_index, 1 )->value; $dari = $worksheet->cells ( $row_index, 2 )->value; if ($english != '') { $row_index ++; echo "<div style='float:left;width:420px'>".$english."</div><div>".$dari."</div>"; } else { $done = true; } } $workbook->close (); 

我检查了页面编码,并将其设置为UTF-8。 当我打开原来的Excel文件,它显示正确的文本,但是当我从PHP COM读取它的编码丢失。 有没有人有解决这个问题。

编辑

我如何确保excel $ worksheet-> cells($ row_index,2) – >值给出的值是正确的编码,或者在Excel中有我可以通过PHP COM设置的任何属性,因此它以UTF-8返回数据?

我已经通过PHP中的mb_detect_encoding函数检查了Excel单元格返回的值的编码,并给出了ASCII,因为它必须给出UTF-16或UTF-8。 看起来,excel并没有给正确的编码带来价值。

这里是我阅读这个脚本的Excel文件: http : //asimishaq.com/myfiles/testfile.xlsx

请注意,该解决scheme仅需使用PHP COM-INTEROP。

正如@rc指出的那样,我们需要在COM构造函数中指定codepage属性来获取正确编码的数据。

 $ExlApp = new COM ( "Excel.Application", NULL, CP_UTF8 ); 

通过在脚本中更改上面的行,数据显示正确。