Преобразование файла CSV в кодировку UCS-2LE с переполнением стека

Я создаю 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 );
}

1

Решение

Вы должны добавить метку порядка байтов (BOM) в начале файла. Это должно быть ‘\ xff \ xfe’ в вашем случае:

$file = fopen($filename,"w");
fwrite($file, '\xff\xfe');
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]