У меня возникла проблема, которую я не могу решить, проведя последние 10 часов поиска в Интернете для ответа.Невозможно правильно декодировать html-объекты в perl
У меня есть некоторые данные в этом формате
??E?�?0?�?<?20120529184453+0200?20120529184453+0200?�?�?G0E?5?=20111213T103134000-136.225.6.103-30365316-1448169323, ver: 12?�?W??tP?2?�? ??|????? ??:o?????tP?�??[email protected]?????[email protected]????�?�?)0?�??? 49471010550?�??	???tP???3??<?�?�?�?�??�?�?�?�?�??�?�?�?�?�
У меня есть PHP-код, не написанный мною, который просто работает html_entity_decode на том, что и она возвращает правильные результаты.
Когда я пытаюсь запустить декодирование Perl, я получаю совершенно другой результат. После некоторой отладки мне кажется, что PHP «правильно» заменяет то, что кажется недействительным, например, �
или 
, в их аналогий ascii, а именно NULL и backspace для упомянутых 2 случаев.
С другой стороны, Perl не расшифровывает эти «недействительные» сущности и оставляет их в покое, что позже один затягивает результат (который проходит через распаковку или, в случае phph, bin2hex, который терпит неудачу, а не распаковывает нуль до 00 он будет распаковывать каждый отдельный символ �
).
Я попробовал все, что я могу думать о включать, выполнив следующую замену в Perl после запуска decode_entities
$var =~ s/&#(\d+);/chr($1)/g
однако, что не работает вообще.
Это сводит меня с ума, и я хотел бы, чтобы это было сделано в perl, а не phpI. Надеюсь, мне не нужно писать 1000 строк соответствия шаблонов в perl, чтобы охватить все возможные сущности и числа.
Кто-нибудь, у кого есть идея, как решить эту проблему, не прибегая к необходимости разобрать PHP всю функцию html_entity_decode в perl или написать бесконечные строки соответствия шаблону?
спасибо, очень оценен. Это решило мою проблему. – ByteFlinger