Как опеределить кодировку произвольного файла и при необходимости перекодировать его в UTF-8 (если кодировка другая). В PHP или использовать какую то утилиту через shell_exec? В настоящее время используется код:
$fileContent = file_get_contents($tmpFile);
if (!mb_check_encoding($fileContent, "UTF-8")) {
$fileContent = utf8_encode($fileContent);
}
file_put_contents($tmpFile, $fileContent);
$fileContent = ""; unset($fileContent);
Однако при больших размерах файлов это расходует много памяти и вызывает ошибку
Fatal error: Allowed memory size of 1073741824 bytes exhausted (tried to allocate 935157329 bytes)