いきなりmb_convert_encodingしてるが、
本当に JIS なのか?
mb_language('uni'); // unicode
とかになってないかい?
ちなみに、mb_detect_encoding では正しく JIS が判断できないよ。
バグじゃないけどね。