取得した半角カナがmb_convert_encodingで文字化けする

取得した文字列をUTF-8に変換する際に、文字列に半角カナが含まれていると文字化けが出てしまった。
取得した文字列の文字コードを自動判別にしていると、sjisの半角カナの場合EUCと誤判定するらしい。

$str = mb_convert_encoding($str,”UTF-8″,”AUTO”);

$str = mb_convert_encoding($str,”UTF-8″,”sjis-win”);

とすると正常になった。

mb_convert_encodingで元の文字コードが分からない場合は、自動判定ではなく文字エンコーディングの判定をしてからの処理が必要になりそう。

参考-文字エンコーディングの判定