X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Flib%2FRT%2FI18N.pm;h=4c70922ef3705dbd189dcfe65d7e5fcfed355fa7;hb=24548f7cf666bac02335d0bc74f81251c7b4ab50;hp=2056b3e28ae30429b0ffe89f53bc7e3b6ad0ffa1;hpb=75162bb14b3e38d66617077843f4dfdcaf09d5c4;p=freeside.git diff --git a/rt/lib/RT/I18N.pm b/rt/lib/RT/I18N.pm index 2056b3e28..4c70922ef 100644 --- a/rt/lib/RT/I18N.pm +++ b/rt/lib/RT/I18N.pm @@ -203,11 +203,6 @@ charset encoding (encoded as octets, *not* unicode-strings). It will iterate all the entities in $entity, and try to convert each one into specified charset if whose Content-Type is 'text/plain'. -the methods are tries in order: -1) to convert the entity to $encoding, -2) to interpret the entity as iso-8859-1 and then convert it to $encoding, -3) forcibly convert it to $encoding. - This function doesn't return anything meaningful. =cut @@ -248,46 +243,21 @@ sub SetMIMEEntityToEncoding { if ( $enc ne $charset && $body ) { my $string = $body->as_string or return; - # NOTE:: see the comments at the end of the sub. - Encode::_utf8_off($string); - my $orig_string = $string; # {{{ Convert the body - eval { - $RT::Logger->debug( "Converting '$charset' to '$enc' for " - . $head->mime_type . " - " - . ( $head->get('subject') || 'Subjectless message' ) ); - Encode::from_to( $string, $charset => $enc, Encode::FB_CROAK ); - }; - - if ($@) { - $RT::Logger->error( "Encoding error: " - . $@ - . " falling back to iso-8859-1 => $enc" ); - $string = $orig_string; - eval { - Encode::from_to( - $string, - 'iso-8859-1' => $enc, - Encode::FB_CROAK - ); - }; - if ($@) { - $RT::Logger->error( "Encoding error: " - . $@ - . " forcing conversion to $charset => $enc" ); - $string = $orig_string; - Encode::from_to( $string, $charset => $enc ); - } - } + $RT::Logger->debug( "Converting '$charset' to '$enc' for " . $head->mime_type . " - " . ( $head->get('subject') || 'Subjectless message' ) ); + + # NOTE:: see the comments at the end of the sub. + Encode::_utf8_off( $string); + Encode::from_to( $string, $charset => $enc ); # }}} - my $new_body = MIME::Body::InCore->new($string); + my $new_body = MIME::Body::InCore->new( $string); # set up the new entity $head->mime_attr( "content-type" => 'text/plain' ) - unless ( $head->mime_attr("content-type") ); + unless ( $head->mime_attr("content-type") ); $head->mime_attr( "content-type.charset" => $enc ); $entity->bodyhandle($new_body); } @@ -361,13 +331,7 @@ sub DecodeMIMEWordsToEncoding { # now we have got a decoded subject, try to convert into the encoding unless ( $charset eq $to_charset ) { - my $orig_str = $enc_str; - eval { Encode::from_to( $enc_str, $charset, $to_charset, Encode::FB_CROAK ) }; - if ($@) { - $enc_str = $orig_str; - $charset = _GuessCharset( $enc_str ); - Encode::from_to( $enc_str, $charset, $to_charset ); - } + Encode::from_to( $enc_str, $charset, $to_charset ); } # XXX TODO: RT doesn't currently do the right thing with mime-encoded headers @@ -514,32 +478,10 @@ sub SetMIMEHeadToEncoding { my @values = $head->get_all($tag); $head->delete($tag); foreach my $value (@values) { - Encode::_utf8_off($value); - my $orig_value = $value; if ( $charset ne $enc ) { - eval { - Encode::from_to( $value, $charset => $enc, Encode::FB_CROAK ); - }; - if ($@) { - $RT::Logger->error( "Encoding error: " - . $@ - . " falling back to iso-8859-1 => $enc" ); - $value = $orig_value; - eval { - Encode::from_to( - $value, - 'iso-8859-1' => $enc, - Encode::FB_CROAK - ); - }; - if ($@) { - $RT::Logger->error( "Encoding error: " - . $@ - . " forcing conversion to $charset => $enc" ); - $value = $orig_value; - Encode::from_to( $value, $charset => $enc ); - } - } + + Encode::_utf8_off($value); + Encode::from_to( $value, $charset => $enc ); } $value = DecodeMIMEWordsToEncoding( $value, $enc, $tag ) unless $preserve_words;