Одной из таких вещей является появление метки порядка байтов UTF или спецификации.Символом UTF-8 для метки порядка байтов является U + FEFF, или, точнее, три байта - 0xef, 0xbb и 0xbf - которые находятся в начале текстового файла.Для UTF-16 используется для указания порядка байтов.Для UTF-8 это на самом деле не нужно.
Так что вам нужно обнаружить три байта и удалить спецификацию.Ниже приведен упрощенный пример того, как обнаружить и удалить три байта.
$str = file_get_contents('file.utf8.csv');
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
if (0 == strncmp($str, $bom, 3)) {
echo "BOM detected - file is UTF-8\n";
$str = substr($str, 3);
}
Вот и все