Вопрос явно идиотский, но я уже на краю.
Ситуация - есть csv файл весьма большого размера, в кодировке UTF-16LE.
Он располагается по url $link.
Мне нужно считать файл полностью и сохранить его в кодировке UTF-8. Проблема в том, что периодически, при перекодировании вылетает исключение:
Code: 8
Message: iconv(): Detected an incomplete multibyte character in input string
Такого нет только при использовании file_get_contents, но я не могу его использовать, т.к. файл в выделенный лимит оперативки явно не поместится.
BOM маркер я удалять пробовал, результата нет.
$source = fopen($link, 'r');
$target = fopen($dir . $pool->from, 'w');
while(!feof($source)){
$string = fgets($source);
$string = iconv('UTF-16LE', 'UTF-8', $string);
if(fwrite($target, $string) == false) {
$save = false;
}
}
fclose($source);
fclose($target);
Я почти в отчаянии, ткните носом в ошибку, пожалуйста, что только не перепробовал.
UPD. Файл не локальный.