4

我在将数据从 utf8 mysql 数据库导出到带有 PHPExcel 并保留中文字符的 Excel 工作表时遇到问题。我的mysql db是utf8,里面有很多汉字,我将这些数据导出到一个多页xls文件(excel5)中,每次导出汉字都变成“?”。我试过 utf8_encode() 但它对我不起作用。我还尝试将输出更改为 excel2007,认为这将是一个 excel5 作家问题。

有没有办法让汉字正确导出?我必须制作整个 php 文件 utf8 吗?如果是这样,我将如何去做?

这是我遇到问题的部分:

$res2 = mysql_query("SHOW COLUMNS FROM ".$sheetnametemp);
while($row2 = mysql_fetch_array($res2, MYSQL_NUM)) {
  $counter = 2;
  $cell = $coltemp;
  $cell .= $counter;
  $objPHPExcel->getActiveSheet()->SetCellValue($cell, $row2[0]);
      $result = mysql_query("SELECT * FROM ".$sheetnametemp);
      while($row = mysql_fetch_array($result))
      {
        $counter++;
        $cell2 = $coltemp;
        $cell2 .= $counter;
        utf8_encode($row[$row2[0]]);
        echo "<br />";
        $objPHPExcel->getActiveSheet()->SetCellValue($cell2,utf8_encode($row[$row2[0]]));
      }

我需要使用这些汉字,因为它是一个多语言目录数据库,所以将其更改为英文将无济于事。另外,如果该信息无论如何都有帮助,我目前正在使用 Xampp 的 Mac。

4

1 回答 1

4

设置你正在执行的 "SET NAMES utf8" 或 mysql_set_charset("UTF8", $conn); 以确保您与数据库的连接使用 UTF-8。

您可以使用 echo mysql_client_encoding($conn); 测试连接;

确保您不再尝试调用 utf8_encode() 。

注意:Excel 文件使用代码页来标识文件中使用的字符集,但 PHPExcel 在内部将该代码页设置为硬编码值 UTF-8,因此文件中的所有字符串内容都应为 UTF-8,并且Excel 也知道将 MS Excel GUI 中的工作表解释为 UTF-8。如果您在 Excel 本身中查看电子表格时没有看到中文字符,请检查 MS Excel 中的语言设置以查看它是否配置为处理中文

信用:@马克贝克。再次感谢。

于 2012-10-04T20:12:12.693 回答