Я создаю CSV-файл. Мне нужно, чтобы он был в кодировке UCS-2LE. Я попробовал следующее, ни одна из которых не работает:
$value = mb_convert_encoding($value,"UCS-2LE");
$value= iconv( mb_detect_encoding( $value ), 'UCS-2LE', $value );
Открытие файла в Notepad ++ показывает кодировку ANSI.
Код:
$file = fopen($filename,"w");
array_walk($csv_data, 'encodeCSV');
foreach ($csv_data as $line) {
fputcsv($file, explode(',', $line));
}
fclose($file);
function encodeCSV(&$value, $key){
$value = mb_convert_encoding($value,"UCS-2LE");
//$value= iconv( mb_detect_encoding( $value ), 'UCS-2LE', $value );
}
Вы должны добавить метку порядка байтов (BOM) в начале файла. Это должно быть ‘\ xff \ xfe’ в вашем случае:
$file = fopen($filename,"w");
fwrite($file, '\xff\xfe');
Других решений пока нет …