使用 PHPExcel 将 utf-8 字符存储到文件中


Using PHPExcel to store utf-8 characters to a file

我正在尝试使用PHPExcel将一个包含utf字符的字符串写入excel。但它并没有按预期编写。下面是示例代码。

我尝试了在stackoverflow上提供的不同解决方案,但没有一个有效,因为我无法正确理解,因为这是我第一次使用PHP。

为我的问题提供了以下示例代码。此示例字符串在实际实现中取自 mysql 表,我应用了"默认字符集=utf8 COLLATE=utf8_bin"来支持 utf-8。

如果我确实喜欢下面并打印到浏览器,那么它可以很好地与"内容类型:文本/html;字符集=UTF-8" 标头。

下面的代码有什么问题?如何解决这个问题?特殊字符是大连字符

<?php
$libdir='/home/user';
include_once($libdir.'/PHPExcel.php');
include_once($libdir.'/PHPExcel/Writer/Excel2007.php');
$workBook = new PHPExcel();
$sheet = $workBook->getActiveSheet();
$str = 'i m &#8211 here';
$str = utf8_decode($str);
//echo STDERR $str;  if it print here then i will get proper string "&#8211 will be converted to big hyphen)
$sheet->setCellValueByColumnAndRow(0, 0, $str);
$filename = "abc.xls";
header('Content-type: application/xls');
header("Content-Disposition: attachment; filename='"$filename'"");
$writer   = new PHPExcel_Writer_Excel5($workBook);
$cache_dir = "/home/user/cache";
$writer->save($cache_dir/$filename);
readfile($cache_dir/$filename);
?>
'&#8211'

是一个 HTML 编号。

像这样使用它来获取原始值:

echo html_entity_decode('&#8211;', ENT_COMPAT, 'UTF-8');

希望这有帮助。