PHPで多言語文字をCSV出力してダウンロードするためのサンプルを書いてみました。

実際にはTSVですが・・・ リンク先にもありますがWindows環境下のExcel(2000)での確認しかしていません。 たぶんWindowsならどのバージョンでも大丈夫だとは思いますが・・・

2010/05/10追記Office 2008 for Mac:評価版でも正常に開ける事を確認しました。

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);

CSVサンプルファイル
ソースダウンロード

ちなみに すべて『サンプル』と記述しています。 样本 - 中国語 Δείγμα - ギリシャ語 กลุ่มตัวอย่าง - タイ語