我正在尝试使用PHPExcel将包含utf字符的字符串写入excel。但它并没有按预期编写。下面是示例代码。
我尝试了stackoverflow提供的不同解决方案,但它们都没有工作可能我无法正确理解,因为这是我第一次使用PHP。
我正在为我的问题提供以下示例代码。这个示例字符串是在实际实现中从mysql表中获取的,我已经应用了“DEFAULT CHARSET = utf8 COLLATE = utf8_bin”来支持utf-8。
如果我喜欢下面并打印到浏览器,那么它可以正常使用“Content-Type:text / html; charset = 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 – here';
$str = utf8_decode($str);
//echo STDERR $str; if it print here then i will get proper string "– 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);
?>
答案 0 :(得分:2)
'–'
是一个HTML编号。
像这样使用它来获得原始值:
echo html_entity_decode('–', ENT_COMPAT, 'UTF-8');
希望这有帮助。