fputcsvでcsvファイルを作成します。csvファイルをwindows1251ecndingに入れたい。しかし、解決策を見つけることができません。どうやってやるの?乾杯
6 に答える
Excelファイルのデフォルトのエンコーディングは、主にマシン固有のANSIwindows1252
です。ただし、そのファイルを作成し、UTF-8文字を挿入している可能性があるため、そのファイルは正常に処理されません。
iconv()
ファイルを作成するときに使用できます。例えば:
function encodeCSV(&$value, $key){
$value = iconv('UTF-8', 'Windows-1252', $value);
}
array_walk($values, 'encodeCSV');
それは機能してい
ます:fputcsvの前にこれを楽しんでください:
$line = array_map("utf8_decode", $line);
ファイルは、文字列が含まれているエンコーディングになります。PHP文字列は生のバイト配列であり、そのエンコーディングはバイトがどこから来たかによって異なります。ソースコードファイルからそれらを読み取っただけの場合、それらはソースコードを保存したものに含まれています。それらがデータベースからのものである場合、それらはデータベース接続が設定されたどのエンコーディングでも使用されます。
あるエンコーディングから別のエンコーディングに変換する必要がある場合は、を使用してiconv
ください。より詳細な情報が必要な場合は、こちらを参照してください。
fputs( $fp, $bom = chr(0xEF) . chr(0xBB) . chr(0xBF) );
これを試してみてください!!!
iconv関数を試してください:
http://php.net/manual/en/function.iconv.php
fputcsv関数に渡す配列のメンバーを必要なエンコーディングに変換するには。
$string = iconv(mb_detect_encoding($string), 'Windows-1252//TRANSLIT', $string);