将PHP转换为xls文件并使用UTF-8编码

3
$filename = "file.xls";

header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");

$content = "asd";
echo $content;

如果$content包含一些Unicode符号,在Excel文件中,结果会像这样:áƒáƒ¡áƒ“ 如何解决这个问题?如何设置这个PHP文件的UTF8编码?
我正在尝试:header("Content-Type: application/vnd.ms-excel; charset=utf-8");但不起作用。

1
最佳解决方案是创建一个真正的Excel BIFF格式的.xls文件,而不仅仅是回显字符串并信任PHP的自动扩展已启用。 - Mark Baker
回显 utf8_encode($content) - David Pullar
1个回答

1
如果您通过简单地回显字符串来生成文件,那么您应该将其创建为xml,然后在回显时需要向文件添加编码。 $content = '<?xml version="1.0" encoding="UTF-8"?>'
您需要按预期在xml中创建文件。
例如:
<?xml version="1.0" encoding="UTF-8"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">
<Worksheet>
<Table>
<Row>
<Cell><Data>$content</Data></Cell>
</Row>
</Table>
</Worksheet>
</Workbook>

请注意,这仍然不是xls文件:它是SpreadsheetML,这是Excel2003引入的一种基于XML的替代二进制BIFF .xls格式的格式。 - Mark Baker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接