创造希腊字符优秀

我已经使用以下头文件来创build包含希腊字符的xls文件。

第一次尝试

header("Content-Type: application/$file_type;charset=utf-8"); header("Content-Disposition: attachment; filename=$file_name.$file_ending"); header("Pragma: no-cache"); header("Expires: 0"); 

第二次尝试

 header("Content-Type: application/$file_type;charset=windows-1253"); header("Content-Disposition: attachment; filename=$file_name.$file_ending"); header("Pragma: no-cache"); header("Expires: 0"); 

创build的文件尽pipe它包含正确的希腊字符(用文本编辑器查看),当我打开它在MS – Excel中希腊字符显示为sympol。

我也尝试了一个库,创buildxls(打开xls二进制格式)具有相同的结果。 这个库有选项来设置代码页和字符集,但什么都没有。

有任何想法吗?

谢谢。

如果你正在使用一个库,那么它应该有一个函数来设置编码为UTF-8。 例如,用PEAR的Spreadsheet_Excel_Writer(http://pear.php.net/package/Spreadsheet_Excel_Writer/redirected),你可以这样做:

 <?php $workSheet = & $workBook -> addWorksheet('Students'); $workSheet -> setInputEncoding('utf-8'); ?> 

当然,您还必须确保您的数据实际上是utf-8,而不是ISO-8859-7或windows-1253。 请注意,这不支持改变工作簿名称(即使用“Μαθητές”而不是“学生”)

我不太确定XLS文件,但是如果您想使用Excel可读的CSV文件,请使用UTF-16编码(使用BOM)和制表符作为分隔符

 header('Content-Description: File Transfer'); header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename=export.csv'); header('Content-Transfer-Encoding: binary'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); echo chr(255) . chr(254); // Add UTF-16 little-endian BOM echo mb_convert_encoding("α\tβ\tγ"), 'UTF-16LE', 'UTF-8'); // from UTF-8 to UTF-16