Он встроен в UserAgent и, таким образом, Mechanize. Одна ОСНОВНАЯ оговорка , чтобы сэкономить волосы
-Для отладки убедитесь, что вы проверили ошибку $ @ после вызова decoded_content.
$html = $r->decoded_content;
die $@ if $@;
Еще лучше, посмотрите источник HTTP :: Message и убедитесь, что все пакеты поддержки есть
В моем случае decoded_content возвратил undef, а содержимое - двоичный файл, и я продолжил погоню. UserAgent установит флаг ошибки при неудачном декодировании, но Mechanize просто проигнорирует его (он не проверяет и не регистрирует частоту как свою собственную ошибку / предупреждение).
В моем случае $ @ sez: "Не могу найти IO / HTML.pm .. Это было оценено
После того, как я погрузился в источник, я обнаружил, что встроенный процесс декодирования является долгим, дотошным и трудным, охватывает практически каждый сценарий и дает массу догадок (спасибо, Жизель!)
если вы параноик, явно установите заголовок по умолчанию, который будет использоваться с каждым запросом в new ()
$browser = new WWW::Mechanize('default_headers' => HTTP::Headers->new('Accept-Encoding'
=> scalar HTTP::Message::decodable()));