こんにちは
CSV ダウンロードページって昔は文字化けに苦しめられていたイメージがありますが、最近はどうなのでしょう。
ソースコード
以下のような感じで、Windows / Mac で化けませんでした。
CSVダウンロードページ
<?php
error_reporting( -1 ) ;
ini_set( 'display_errors', 1 ) ;
$csv_text = '㍊,㍻,髙,靍,濵,﨑,①,Ⅳ' ;
$csv_file_name = 'やゔぁい文字が含まれた.csv' ;
header('Content-Type: text/csv') ;
header('Content-Disposition: attachment; filename=' . $csv_file_name . "; filename*=UTF-8''" . urlencode($csv_file_name)) ;
echo pack('C*',0xEF,0xBB,0xBF) . $csv_text ;
おわり
Content-Type に application/vnd.ms-excel
とか application/octet-stream
とか指定したり、
mb_convert_encoding() で SJIS-winに変換したり、
Mac版ExcelのためにBOM付きUTF-16LEに変換したり、
ファイル名はアルファベットだけに制限したり、
…する時代は終わったのだろうか1。
すてき 2
参考と注釈
- 【PHP】mb_convert_encodingでUTF-8→SJIS文字化け
- 【php】はしご高が文字化けしない文字コード変換
- PHPでダウンロードさせるファイル名がIEで文字化けする件 - Qiita
- ExcelでBOM付きが無双するPHPでのCSVの書き出し方
- エクセルで文字化けさせないCSVの作り方
- PHPでExcelで開いても文字化けしないCSVを出力する - Qiita
- List of HTTP header fields - Wikipedia
-
しかしApache OpenOfficeでは開けないという噂をきいたことがある。ほんと? ↩
-
詳しい人達に後ろから刺されたい。 ↩