[PHP]CSVのインポートで特殊文字が文字化けするときは

こんにちは、低頻度の開発備忘録です(笑)

今回は、SJISのファイルを読み込んだときの文字化けの対処法についてです。


CSVなど、文字コードがSJISになっているファイルをPHPで読み込むと、気をつけないと特殊文字が「?」とかに文字化けしてしまいます。

ここで言う特殊文字とは、
・髙
・﨑
・彅
など名前に入っているものや、

・①②③~
・ⅠⅡⅢ~、ⅰⅱⅲ~などのローマ数字 
・㈱
などがあげられます。

そういうときはSJISではなくSJIS-winを使うと無事に読み込むことができました。

例)こんな感じで使用
$file = file($file_path);
mb_convert_variables('UTF-8', 'SJIS-win', $file);     //配列まるごとUTF-8に変換

SJIS-winはMicrosoftが拡張したShift-JISなので、普通のSJISより扱える文字が多いみたいです。
基本的にこちらのSJIS-winを使うようにすれば大丈夫そうですね。

簡単にメモ書きでした。