Php Codeigniter数据到csv字符的阿拉伯文编码问题
我使用codeigniter作为连接字符集的框架Php Codeigniter数据到csv字符的阿拉伯文编码问题,php,excel,codeigniter,csv,character-encoding,Php,Excel,Codeigniter,Csv,Character Encoding,我使用codeigniter作为连接字符集的框架 $config['charset'] = 'UTF-8'; 阿拉伯语正确显示在网站和数据库中。问题在于将数据导出到csv文件。使用cPanel上的代码编辑器可以正确显示该文件,但是当我下载该文件并使用excel打开它时,我得到了以下信息 当我用记事本打开它时,阿拉伯语显示正确,但当我将文件上传到facebook产品目录时,阿拉伯语显示也不正确。这是密码 $handler = fopen('./directory/'.$fileName,'a+
$config['charset'] = 'UTF-8';
阿拉伯语正确显示在网站和数据库中。问题在于将数据导出到csv文件。使用cPanel上的代码编辑器可以正确显示该文件,但是当我下载该文件并使用excel打开它时,我得到了以下信息
当我用记事本打开它时,阿拉伯语显示正确,但当我将文件上传到facebook产品目录时,阿拉伯语显示也不正确。这是密码
$handler = fopen('./directory/'.$fileName,'a+');
$exporteddata = 'availability,condition,description'.PHP_EOL;
for ($x=0; $x<count($cat_products); $x++) {
if(strlen(trim($cat_products[$x]->description)) == '0'){
$description = ' ';
}
else{
$description = $cat_products[$x]->description;
}
$exporteddata .= 'in stock,new,'.$description.PHP_EOL;
}
fwrite($handler,$exporteddata);
fclose($handler);
如果我们忽略下载功能,只关注从cPanel的文件管理器下载的数据本身,我仍然有这个问题,所以它不仅与下载功能有关,还与写入功能有关
因此,如何解决编码问题,以便在使用excel打开时,在csv中正确显示阿拉伯语,以便使用facebook正确导入
[更新]
当我在记事本中打开文件并用ANSI编码保存时,用excel阿拉伯语数据打开的新文件显示正确。我可以使用php将书写编码更改为ANSI吗?这解决了问题,但facebook仍然存在编码错误的问题,我会联系facebook。首先
mb_convert_encoding($exporteddata, "Windows-1252", "UTF-8");
fwrite($handler,$exporteddata);
fclose($handler);
第二
public function get_file($file){
$file = 'directory/'.$file;
if (!is_file($file)) {
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
echo 'File not found '.$file;
} elseif (!is_readable($file)) {
header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
echo 'File not readable';
} else {
header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK');
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header("Content-Type: application/csv");
header('Pragma: no-cache');
echo "\xEF\xBB\xBF";
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
readfile($file);
}
}
添加echo“\xEF\xBB\xBF”;下载功能和mb_convert_编码到已解决的保存功能,问题和阿拉伯文数据将在excel和记事本中正确显示。。这是一个老问题,但对于最新版本的Excel,有一些答案。
public function get_file($file){
$file = 'directory/'.$file;
if (!is_file($file)) {
header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');
echo 'File not found '.$file;
} elseif (!is_readable($file)) {
header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
echo 'File not readable';
} else {
header($_SERVER['SERVER_PROTOCOL'] . ' 200 OK');
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header("Content-Type: application/csv");
header('Pragma: no-cache');
echo "\xEF\xBB\xBF";
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\"");
readfile($file);
}
}