Използвам codeigniter като рамка с набор от символи за връзка
$config['charset'] = 'UTF-8';
Арабският се показва правилно в уебсайта и базата данни. Проблемът е с експортирането на данни в csv файл. Файлът се показва правилно с помощта на редактор на код в cPanel, но когато изтегля файла и го отворя с помощта на excel, получавам това
Когато го отворя с notepad, арабският се показва правилно, но когато кача файла в продуктовия каталог на 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);
След това пренасочете към функция, която започва да изтегля файла с този код
public function get_file($file){
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header("Content-Type: application/csv");
header('Pragma: no-cache');
header("Content-Disposition: attachment; filename=".basename($file) . "\"");
echo "\xEF\xBB\xBF";
$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');
readfile($file);
}
}
Ако пренебрегнем функцията за изтегляне и просто се концентрираме върху самите данни, изтеглени от файловия мениджър от cPanel, все още имам проблема, така че той не е свързан само с функцията за изтегляне, а е свързан с функцията за запис.
И така, как да коригирате проблема с кодирането, така че арабският да се показва правилно в csv, ако се отвори с excel, така че да може да се импортира правилно с помощта на facebook.
[АКТУАЛИЗАЦИЯ] Когато отворя файла в Notepad и го запазя с ANSI кодиране, след което отворя новия файл с данни на excel Arabic се показва правилно. Мога ли да променя кодирането за писане на ANSI с помощта на php?