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

Я создаю 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');
Другие вопросы по тегам