Catalyst-Controller-SimpleCAS
view release on metacpan or search on metacpan
lib/Catalyst/Controller/SimpleCAS/Role/TextTranscode.pm view on Meta::CPAN
## --
my ($MainPart) = $MIME->subparts or return;
## ------
## New: throw the kitchen sink at trying to figure out the charset/encoding
##
## This solves the long-standing problem where MHT files saved by Word 2010
## would load garbled. These files are encoded as 'UTF-16LE', and the system
## is not able to realize this out of the box (I think because it lists the
## the charset ambiguously as ' charset="unicode" ' in the Content-Type
## MIME header, but I'm no expert on Unicode). Below we're basically trying
## all of the functions of HTML::Encoding until we find one that gives us
## an answer, and if we do get an answer, we apply it to the MIME object before
## calling ->body_str() which will then use it to decode to text.
##
my $decoded = $MainPart->body; # <-- decodes from base64 (or whatever) to *bytes*
my $char_set =
HTML::Encoding::encoding_from_html_document ($decoded) ||
HTML::Encoding::encoding_from_byte_order_mark ($decoded) ||
( run in 0.363 second using v1.01-cache-2.11-cpan-88abd93f124 )