不正な UTF-8 ってなんでしょう・・・
htmlspecialcharsは 無効な文字を削除する関数ではありませんし。