この記事は2年以上前の投稿になります。
記載された情報が古くなっている可能性がございますので十分ご注意ください。
記載された情報が古くなっている可能性がございますので十分ご注意ください。
マルチバイト関数(mb~)ではない「fgetcsv」等でマルチバイト文字がうまく処理できない場合の対応です。
当然、マルチバイト関数ではないので、「mb_language」や「mb_internal_encoding」を指定しても意味はありません。
「fgetcsv」等の関数はロケールの設定に依存するため、下記のような感じでsetlocale()で指定します。
setlocale(LC_ALL, 'ja_JP.Shift_JIS'); setlocale(LC_ALL, 'ja_JP.EUC-JP'); setlocale(LC_ALL, 'ja_JP.UTF-8');
マルチバイト文字列の文字化けや一部消失などは、複数の要因が問題になっていることがありますので、必ずしもこの方法だけで直らなかったり、別の方法で直ったりすることがあります。