WWW::Mechanize::DecodedContent - decode Mech content using its HTTP response encoding


WWW-Mechanize-DecodedContent documentation Contained in the WWW-Mechanize-DecodedContent distribution.

Index


Code Index:

NAME

Top

WWW::Mechanize::DecodedContent - decode Mech content using its HTTP response encoding

SYNOPSIS

Top

  use WWW::Mechanize;
  use WWW::Mechanize::DecodedContent;

  my $mech = WWW::Mechanize->new;
     $mech->get($url);

  my $content = $mech->decoded_content || $mech->content;

DESCRIPTION

Top

WWW::Mechanize::DecodedContent is a plugin to add decoded_content utility method to WWW::Mechanize.

NOTE If you're using WWW::Mechanize 1.50 or later, just use $mech->content and it will return decoded content.

METHODS

Top

res->encoding

Because it loads HTTP::Response::Encoding module, it automatically adds encoding method to HTTP::Response class.

  my $enc = $mech->res->encoding;

Note that $enc might be empty if HTTP response header doesn't contain valid charset attribute.

decoded_content
  my $content = $mech->decoded_content;

returns HTML as decoded using HTTP response encoding. Returns undef if encoding is not specified. In that case you might need to get the raw content using $mech->content, and decode it using the default encoding, which is likely to be iso-8859-1.

AUTHOR

Top

Tatsuhiko Miyagawa <miyagawa@bulknews.net>

LICENSE

Top

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Top

HTTP::Response::Encoding, WWW::Mechanize


WWW-Mechanize-DecodedContent documentation Contained in the WWW-Mechanize-DecodedContent distribution.

package WWW::Mechanize::DecodedContent;

use strict;
our $VERSION = '0.02';

use Encode ();
use HTTP::Response::Encoding;

sub WWW::Mechanize::decoded_content {
    my $mech = shift;
    my $content = $mech->content(@_);
    return $content unless $mech->{ct} && $mech->{ct} =~ m!^text/!i;

    ## WWW::Mechanize 1.50 or over calls decoded_content() to get page
    return $content if Encode::is_utf8($content);

    if (my $enc = $mech->res->encoding) {
        return Encode::decode($enc, $content);
    } else {
        return;
    }
}

1;
__END__