Php CSV传输到excel编码错误

Php CSV传输到excel编码错误,php,excel,csv,Php,Excel,Csv,excel2003可以打开csv文件,如果分隔符是tab,它可以自动将数据转换为正确的列 问题在于字符不是ascii字符。libreoffice会打开选择字符集的对话框,但excel2003不会打开,并将字符导入错误的字符集 <?php $filename ="excelreport.xls"; $contents1 = "Name \t Location (where from) \t Age \t \n"; $contents = "testdata1 \t testdata2 \t

excel2003可以打开csv文件,如果分隔符是tab,它可以自动将数据转换为正确的列

问题在于字符不是ascii字符。libreoffice会打开选择字符集的对话框,但excel2003不会打开,并将字符导入错误的字符集

<?php
$filename ="excelreport.xls";

$contents1 = "Name \t Location (where from) \t Age \t \n";
$contents = "testdata1 \t testdata2 \t testdata3 \t \n";
$problematicData = array('ä', 'ö', 'õ', 'ü');

header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename='.$filename);

echo $contents1;
echo $contents;
echo implode(" \t ", $problematicData);

是否尝试改用逗号?PHP有一个fputcsv函数,可以轻松地处理这一问题

旧版excel 2003使用\t自动解析列,但似乎编码问题仍然存在,因为它不知道使用哪种编码。OO提供了CSV导入对话框,您可以在其中指定编码为UTF-8,但MS excel 2003没有此对话框。如果有人可以尝试如何在更新版本的MS产品上使用它?@jurka-那么,另一个选择是尝试创建XLS或XSLX。有一些工具:包括我写的一个。但老实说,我不确定在Excel2003和更高版本以及OO上没有对话框时,任何一种解决方案都能完美工作。