Иногда требуется сменить полностью кодировку файла, например с utf-8 в windows-1251. Зачастую это делается с помощью редактора кода. Но что если это необходимо сделать программно, в этом поможет функции php - iconv().
Для того чтобы не перекодировать каждую строку файла с помощью iconv(string $input_charset, string $output_charset, string $string) - мы можем преобразовать лишь одну строку. Этой строкой будет наш файл, полностью, полученный с помощью функции file_get_contents($path).
Для примера полностью перекодируем файл из UTF-8 в WINDOWS-1251.
В итоге это будет выглядеть вот так:
$file_string = file_get_contents ("tmp/test_file.csv"); $file_string = iconv("UTF-8", "WINDOWS-1251", $file_string); file_put_contents ("tmp/test_file.csv", $file_string);
Также, если вы хотите сменить окончания строк, например с Mac ( \r ) формата на Windows ( \r\n ) / Unix ( \n ) формат:
// Windows CRLF $string = preg_replace('~(*BSR_ANYCRLF)\R~', "\r\n", $string); // Unix CR $string = preg_replace('~(*BSR_ANYCRLF)\R~', "\n", $string); // Mac LF $string = preg_replace('~(*BSR_ANYCRLF)\R~', "\r", $string);