Прежде всего, отображаемые вами строки представляют собой шестнадцатеричные представления, а не фактические кодировки UCS-2 или UTF-8.
Тем не менее, между UCS-2 и UTF-8 есть довольно большие различия, которые позволили бы вам написать код, который корректно обнаруживает кодировку с действительно высоким уровнем успеха , Но перед этим покажите нам, как вы используете mb_detect_encoding
, и это не работает. Нет смысла изобретать колесо еще хуже, чем уже существует.
Обновление: Ваши входные строки на самом деле не являются закодированными значениями байтов; они шестнадцатеричные представления значений. Чтобы отменить это, вы можете использовать
$proper_string = pack('H*', $hex_encoded_string);
После этого mb_detect_encoding
должно работать нормально.