我怎么编码呢?

时间:2011-01-12 07:10:34

标签: php utf-8 encode arabic

Salaam人,

我想通过php将报告导出到excel,我写了这段代码:

header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header( "Content-type: application/vnd.ms-excel; charset=UTF-8" ); 
header("Content-Disposition: attachment; filename=test.xls");

$data = html_entity_decode( $data ,ENT_NOQUOTES,'utf-8');
$data = chr(255).chr(254).iconv("UTF-8","UTF-16LE",$data);

print $data;
exit();  

但效果不好,我的项目是阿拉伯语,我必须编码所有字符, 请告诉我如何处理它?<​​/ p>

最诚挚的问候,

麦克

2 个答案:

答案 0 :(得分:3)

application/vnd.ms-excel没有charset=参数,因为它不是文本格式。您可能没有编写有效的Excel文件。您的代码假定输出CSV文件或其他内容。因此,相应地更改标题并尝试一下:

header("Content-type: text/csv; charset=UTF-8" );
header("Content-Disposition: attachment; filename=test.csv");

跳过BOM并重新编码。好吧,你可能需要根据这个How can I output a UTF-8 CSV in PHP that Excel will read properly?

的BOM

如果你想写一个excel文件,那么请阅读BIFF格式(它实际上应该使用它)。我不确定它是如何以及是否支持国际角色。但是你应该使用Excel编写器库:

答案 1 :(得分:0)

在任何输出之前执行这些代码行非常重要。这意味着如果在此之前有任何print / echo命令,它将失败。

之外的php文件中也是html甚至是空格
<?php

标签会毁了它:)