ホームページ >バックエンド開発 >PHPチュートリアル >PHP が CSV ファイルを生成し、Excel で文字化けを開く_PHP チュートリアル

PHP が CSV ファイルを生成し、Excel で文字化けを開く_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:43:101344ブラウズ

今日、クラスメートから、PHP で生成された CSV ファイルを Excel で開くと文字化けが発生する理由を尋ねられました。以下に、この方法がすべての友人に役立つことを願っています。

Baiduで検証した結果、判明しました

PHP で生成された UTF-8 でエンコードされた CSV ファイルを Excel で開くと、中国語で文字化けが表示されます。これは、出力された CSV ファイルに BOM が含まれていないためです。

簡単に対処するだけです

それでは、PHP で BOM を出力するにはどうすればよいでしょうか?

すべてが出力される前

コードは次のとおりです コードをコピー

print(chr(0xEF).chr(0xBB).chr(0xBF));


例: php が csv を生成する場合、次のことができます

コードは次のとおりです コードをコピー

$now = gmdate("D, d M Y H:i:s"); header("有効期限: 2001 年 7 月 3 日火曜日 06:00:00 GMT"); header("キャッシュ制御: max-age=0、キャッシュなし、必須再検証、プロキシ再検証"); header("最終更新日: {$now} GMT");
// 強制ダウンロード
header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("コンテンツタイプ: アプリケーション/ダウンロード");
// レスポンスボディの性質 / エンコーディング
header("Content-Disposition:attachment;filename={$filename}"); header("コンテンツ転送エンコーディング: バイナリ"); $items_data=array(
'0'=>array('title'=>'テスト テスト test1'),
'1'=>array('title'=>'テストテストテスト2'),
'2'=>array('title'=>'テストテストテスト3')
)

print(chr(0xEF).chr(0xBB).chr(0xBF));//漢字表示の文字化けに対処するためにutf-8 + bomを設定します

エコー array2csv($items_data);
関数 array2csv(配列 &$配列)
{
If (count($array) == 0) {
null を返します。 }
ob_start(); $df = fopen("php://output", 'w'); fputcsv($df, array_keys(reset($array))); foreach ($array as $row) {
fputcsv($df, $row); } fclose($df); ob_get_clean() を返す
}
?>




もう 1 つの方法は Office を使用することです

図に示すように、Microsoft
Office
2010 Excel、データセルフテキストを開きます:




この CSV 形式ファイルをインポートすると、図に示すように
エンコーディング
も選択する必要があります:

ここでUTF-8を選択すると、画像のように文字化けが解消されていることがわかります。

補足: UTF-8 は、インターネット上で最も広く使用されている Unicode

エンコーディング

の実装です。 UTF-8 の最大の特徴の 1 つは、可変長エンコード方式であることです。シンボルを表すのに 1 ~ 4 バイトを使用でき、バイト長はシンボルによって異なります

http://www.bkjia.com/PHPjc/633200.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/633200.html

技術記事今日、クラスメートから、PHP で生成された CSV ファイルを Excel で開くと文字化けして表示されるのはなぜなのかと尋ねられました。以下に、この方法がすべての友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。