7

fputcsvでcsvファイルを作成します。csvファイルをwindows1251ecndingに入れたい。しかし、解決策を見つけることができません。どうやってやるの?乾杯

4

6 に答える 6

12

Excelファイルのデフォルトのエンコーディングは、主にマシン固有のANSIwindows1252です。ただし、そのファイルを作成し、UTF-8文字を挿入している可能性があるため、そのファイルは正常に処理されません。

iconv()ファイルを作成するときに使用できます。例えば:

function encodeCSV(&$value, $key){
    $value = iconv('UTF-8', 'Windows-1252', $value);
}
array_walk($values, 'encodeCSV');
于 2012-09-19T05:21:05.113 に答える
12

それは機能してい
ます:fputcsvの前にこれを楽しんでください:

$line = array_map("utf8_decode", $line);
于 2014-12-12T10:10:05.220 に答える
6

ファイルは、文字列が含まれているエンコーディングになります。PHP文字列は生のバイト配列であり、そのエンコーディングはバイトがどこから来たかによって異なります。ソースコードファイルからそれらを読み取っただけの場合、それらはソースコードを保存したものに含まれています。それらがデータベースからのものである場合、それらはデータベース接続が設定されたどのエンコーディングでも使用されます。

あるエンコーディングから別のエンコーディングに変換する必要がある場合は、を使用してiconvください。より詳細な情報が必要な場合は、こちらを参照してください。

于 2012-09-19T05:27:12.673 に答える
5
fputs( $fp, $bom = chr(0xEF) . chr(0xBB) . chr(0xBF) );

これを試してみてください!!!

于 2017-06-08T07:00:22.960 に答える
2

iconv関数を試してください:

http://php.net/manual/en/function.iconv.php

fputcsv関数に渡す配列のメンバーを必要なエンコーディングに変換するには。

于 2012-09-19T05:19:27.880 に答える
1
$string = iconv(mb_detect_encoding($string), 'Windows-1252//TRANSLIT', $string);
于 2019-02-14T15:56:07.417 に答える