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 に答える