【问题标题】:creating excel with Greek characters用希腊字符创建 excel
【发布时间】:2011-10-26 12:34:19
【问题描述】:

我使用以下标头来动态创建包含希腊字符的 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");

创建的文件虽然包含正确的希腊字符(使用文本编辑器查看),但当我在 ms-excel 中打开它时,希腊字符显示为符号。

我还尝试了创建具有相同结果的 xls(开放 xls 二进制格式)的库。这个库有设置代码页和字符集的选项,但仍然没有。

有什么想法吗?

谢谢。

【问题讨论】:

    标签: php html excel character-encoding


    【解决方案1】:

    如果您使用的是库,那么它应该具有将编码设置为 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。 请注意,这不支持更改工作簿名称(即使用“Μαθητές”而不是“学生”)

    【讨论】:

    • 感谢@periklis,我使用了不同的库并且工作了。我一直在使用 utf-8
    【解决方案2】:

    我不太确定 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
    

    【讨论】:

      猜你喜欢
      • 2016-04-02
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多