私はしばらくこれにいました。PHPスクリプト(データベースからデータを取得する)から.csvファイルを作成しようとしています。私の問題は、特殊文字が正しく表示されないことです。
奇妙なことに、データベースからの特殊文字が正しく表示されますが、特定の文字をエントリに追加する必要があります。
たとえば、データベースは「Humidité」(フランス語で湿度) を返します。これは、エクスポートされた .csv に正しく表示されます。
しかし、phpスクリプトから文字列を追加するとしましょう
$member->humidity . ': 10% à 20%';
csvで私は見るでしょう
Humidité: 10% [weird characters] 20%
したがって、umimité の「é」は問題ありませんが、PHP で追加した「à」が表示されません。
一部の特殊文字が正しく表示されているため、ヘッダーは問題ないようです
$data = the whole csv file in a string
header('Content-Encoding: UTF-8');
header('Content-type: text/csv; charset=UTF-8');
header("Content-Disposition: attachment; filename=file.csv");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header("Content-Length: " . strlen($data));
echo "\xEF\xBB\xBF"; // UTF-8 BOM
echo $data;
だから私の推測では、問題は私の Apache サーバーから来ているということです。
これを見つけたときdefault_charset = "utf-8"
、php.iniを変更AddDefaultCharset UTF-8
し、httpd.conf bu に追加しましたが、解決しませんでした。
何か案は?ありがとう!