Я хочу написать в .csv файл с символами UTF-8, и я использую $ bom.
Это нормально работает с Еореп и режим c / c +, r / r + или w / w +, но не с режимом a / a +. Для меня важно добавлять данные в конце файла, а не в начале. В этом режиме a / a + специальные символы не распознаются. Я не могу понять причину этой проблемы.
Ниже приведен код:
$fp = fopen("my_file.csv", "a+");
fputs($fp, $bom = ( chr(0xEF) . chr(0xBB) . chr(0xBF) ) );
fputcsv($fp, array("col1","col2","col3"), ";");
fclose($fp);
Вы не можете просто поставить Unicode Порядок следования байтов везде, где вы хотите, он должен быть в верхней части файла:
Использование спецификации является необязательным, и, если используется, должен появиться в начале текстового потока.
Других решений пока нет …