PDFファイルをダウンロード後に完了ページに遷移させる
PHPを使用してPDFファイルを動的にダウンロードしたところ、「header」関数でのリ…
外部ファイル(CSVファイル等)を読み込んでサイト内に表示する際に、保存時の文字コードが異なる場合に文字化けになることがあります。
毎回、制作者が調整できれば良いですが、担当が変わっても問題なく処理できるよう、自動で文字コードの変換を行う方法をメモ。
$fileName = '○○○○.csv';
$fp = fopen($fileName, 'r');
$ary = array('UTF-8', 'eucJP-win', 'SJIS-win', 'ASCII', 'EUC-JP', 'SJIS', 'JIS');
while($line = fgetcsv($fp)) {
$encoding = mb_detect_encoding($line[1], $ary, true);
if($encoding != 'UTF-8'){
echo(mb_convert_encoding($line[0], 'UTF-8', $encoding));
echo(mb_convert_encoding($line[1], 'UTF-8', $encoding));
}else{
echo($line[0]);
echo($line[1]);
}
}
fclose($fp);
「mb_detect_encoding」は初期状態では判別できる文字コードの種類が少ないので、第二引数に独自配列($ary)を追加してから判別。
参考例はCSVファイルを読み込み、「UTF-8」形式でない時にのみ、「UTF-8」に変換して表示しています。