1

我正在创建一个 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 );
}
4

1 回答 1

0

您应该在文件的开头添加字节顺序标记 ( BOM )。在您的情况下,这应该是 '\xff\xfe' :

$file = fopen($filename,"w");
fwrite($file, '\xff\xfe');
于 2014-11-19T15:15:30.963 回答