PHP vs UTF-8
mb_strlen в частности.
Почитайте вот эту статью на хабре: Определение кодировки текста в PHP — обзор существующих решений плюс еще один велосипед. Там есть решение. Это если mb_convert_encoding(...mb_detect_encoding()) вам не поможет.