11

MySQL では、データ フィールド タイプを に設定し、データutf8_binを Unicode で保存しています。テキストは Web ページに正しく表示されています。

テーブルからテーブルにデータをエクスポートする Excel ファイルを生成したいと考えています。.xlsとの出力.cvsは - '????' です。

ここで他の回答をチェックアウトします。ヘッダーを使用するように言及されています:

header("content-type:application/csv;charset=UTF-8");

同様の質問。しかし、それは機能していません。ヘッダーを使用した後、csv 出力は - सूरà¥à¤¯à¤¾ です。

助けてください。ありがとう。

4

4 に答える 4

21

この投稿は私の問題を解決しました: https://stackoverflow.com/a/4762708/2349494

そして、これが変換を行ったものです:

print chr(255) . chr(254) . mb_convert_encoding($csv_output, 'UTF-16LE', 'UTF-8');

以前はガベージ文字を取得していましたが、正しいデータがエクスポートされるようになりました。

于 2013-07-25T07:45:05.987 に答える
13

私は同じ問題を抱えていましたが、2つのことを組み合わせてそれを行いました:

最初に、テーブルの照合順序を UTF8 に変更する必要があります (例: "utf8_general_ci") (または、それを確認するだけです)。次に、MySQL クエリの後に次のコードを追加します。

mysql_query("SET NAMES utf8");

お気に入り

$result = mysql_query("SHOW COLUMNS FROM table WHERE Field NOT IN ('user_id', 'password')");
mysql_query("SET NAMES utf8");

そして、これをヘッダーとして使用します(ニーズに合わせて調整してください):

header('Content-Description: File Transfer');
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");
header('Content-Transfer-Encoding: binary');
header('Pragma: public');
print "\xEF\xBB\xBF"; // UTF-8 BOM
print $csv_output;
exit;
于 2013-07-24T20:24:33.363 に答える
0

次のコードを試してください。

ob_end_clean();
$_filename = date('Y_m_d_H_i').".csv";

header("Cache-Control: public"); 
header("Content-Type: application/octet-stream");
header("Content-Type: text/csv; charset=utf-8");
header("Content-Disposition: attachment; filename=$_filename");
// Read the file from disk
readfile($filename);
exit();
于 2013-07-11T12:30:41.613 に答える