PHPで多言語文字のCSVファイル出力
PHPで多言語文字をCSV出力してダウンロードするためのサンプルを書いてみました。
- 仕様についてはこちら
- 多言語文字を文字化けせずにCSV形式で出力するには?
実際にはTSVですが・・・
リンク先にもありますがWindows環境下のExcel(2000)での確認しかしていません。
たぶんWindowsならどのバージョンでも大丈夫だとは思いますが・・・
CSV出力に関してfputcsvでいけるかと思ったんですが、PHPはよくわからくてうまくUTF-16で出力できず、下記のサンプルで・・・
ソースファイルはUTF-8での保存を想定しています。
<?php
header ("Content-Type: application/octet-stream");
header ("Content-Disposition: attachment; filename=" . "hoge.csv");
header ("Content-Description: CSV Output");
//リトルエンディアン(0xFF=255 0xFE=254)をあらわすBom
$bom = chr(255) . chr(254);
//タブ文字生成は各自でよろしく^^;
$record = "サンプル1t样本1tΔείγμα1tกลุ่มตัวอย่าง1n";
$record .= "サンプル2t样本2tΔείγμα2tกลุ่มตัวอย่าง2n";
$record .= "サンプル3t样本2tΔείγμα3tกลุ่มตัวอย่าง3n";
//エンコード
$encoded = $bom . mb_convert_encoding($record, 'UTF-16LE', 'UTF-8');
//出力ストリームにのせる
$out = fopen('php://output','w');
fputs( $out, $encoded );
//fputcsv( $out, $csvArray, "t" );
fclose($out);
ちなみに
すべて『サンプル』と記述しています。
样本 - 中国語
Δείγμα - ギリシャ語
กลุ่มตัวอย่าง - タイ語