DRYな備忘録

Don't Repeat Yourself.

phpの文字化けがmb_convert_encodingで治らない?

問題

これでは治らない

$str = mb_convert_encoding($str,'EUC-JP');
echo $str;

解決

これで治った

$str = mb_convert_encoding($str,'ECU-JP','UTF-8');
echo $str;

原因

第三引数を設定しないとphp内部エンコーディングをfrom_encodingとして参照するため

echo 'original-enc is ' . mb_detect_encoding($str);
echo 'internal-enc is ' . mb_innternal_encoding();
echo 'encoding to    ' . 'EUC-JP';

だから、こういうのがフレキシブルなのか?

$str = mb_convert_encoding($str, 'EUC-JP', mb_detect_encoding($str));

雑感

やっぱりブログにしないと忘れる