21.12.2018

Изменить кодировку файла с помощью php

Иногда требуется сменить полностью кодировку файла, например с 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);
Поделиться: