2017-06-12 5 views
-1

mysqlテーブルからデータを取得することによって、csvファイルを生成して、いくつかのftpフォルダにアップロードしています。しかし、FTP側からこのcsvファイルを使用している他の人は、それがANSIエンコーディングであると言います。 UTF-8エンコーディングに変更するにはどうしたらいいですか?このため私は以下のコードを使用しています。PHPを使用してデフォルトのUTF-8エンコーディングを使用してcsvファイルを生成するには

header('Content-Encoding: utf-8'); 
    header('Content-Type: text/csv; charset=utf-8'); 
    $fh1 = fopen($current_csv_name, 'w+'); 
    foreach($csv_data as $curl_response) 
    { 
     fputs($fh1, implode($curl_response, ';')."\n"); 
    } 
    fclose($fh1); 

私はメモ帳でファイルを開いをダウンロードし、それは常にASNI​​としてエンコーディングを示しているとして保存をクリックしてください。どこで間違っているの?どんな助けでも大歓迎です。

+0

明示的にアプリケーションを(Notepad ++など)強制してファイルをUTF-8として扱うと、内容は正しく表示されますか?次に、UTF-8です。コンテンツが基本ASCII文字のみで構成されている場合、UTF-8は事実上他のすべてのエンコーディングと区別できません。また、Notepad et al。単に間違って推測しているだけです。 – deceze

+0

なぜこのタグはmysqlですか? –

答えて

1

ファイルの先頭にBOM(Byte Order Mark)を追加する必要があると思います。そうしないと、ファイルシステムはデフォルトでANSIになります。

header('Content-Encoding: utf-8'); 
header('Content-Type: text/csv; charset=utf-8'); 
$fh1 = fopen($current_csv_name, 'w+'); 

$bom = chr(0xEF) . chr(0xBB) . chr(0xBF); 
fputs($fh1, $bom); 

foreach($csv_data as $curl_response) 
{ 
    fputs($fh1, implode($curl_response, ';')."\n"); 
} 
fclose($fh1); 
関連する問題