PHPでCSVファイルを生成し、ハードディスクに保存しています(ダウンロードはしたくありません)。データベースの文字セットはutf8_general_ci
あり、そこには度記号 ( °
) のような文字があり、PHPmyadmin で完全に表示されます。これらの文字は CSV ファイルに保存する必要があります。私が行うことはすべて UTF-8 ですが、ファイルはエンコーディングで保存されますISO-8859-1
。utf8_encode
関数の使用を開始すると、Excel またはその他のテキスト エディターÂ
に変換すると、他の文字が表示されます ( ) 。UTF-8
何がうまくいかないのかわからず、追跡に何時間も費やしましたが、成功しませんでした。
SET NAMES utf8
であることを確認しようとしましたがUTF-8
、それはより奇妙な文字を引き起こし、UTF-8
エンコーディングがありません。MySQLi を使用set_charset
しても同じことができます。ヘッダーをContent-type:text/html;charset=UTF-8
CSV として使用すると、デフォルトのエンコーディングとして utf-8 が使用されず、これらの組み合わせも使用されません。
いくつかのコード:
header("Content-type:text/html;charset=UTF-8");
$rMysqli = new mysqli("localhost", "user", "pass", "database");
$rCSV = fopen("test_".time().".csv", 'w');
$aCSVdata = array($var1, $var2, $var3);
fputcsv($rCSV, $aCSVdata, ",", "\"");
fclose($rCSV);
それはほとんどすべてが起こっていることです。°
やなどの特殊文字のみを含む通常の CSV データØ
です。