]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/UTF8.pm
if the charset is unknown, assume UTF-8
[debbugs.git] / Debbugs / UTF8.pm
index 0c4d33619dce695ab2de3b0a6c6bd1eba97fba94..01351f3668f04e2e33704eb672300006bf656579 100644 (file)
@@ -28,7 +28,7 @@ charsets to UTF8.
 use warnings;
 use strict;
 use vars qw($VERSION $DEBUG %EXPORT_TAGS @EXPORT_OK @EXPORT);
-use base qw(Exporter);
+use Exporter qw(import);
 
 BEGIN{
      $VERSION = 1.00;
@@ -154,6 +154,10 @@ sub convert_to_utf8 {
     if ($charset eq 'RAW') {
         croak("Charset must not be raw when calling convert_to_utf8");
     }
+    ## if the charset is unknown or unknown 8 bit, assume that it's UTF-8.
+    if ($charset =~ /unknown/i) {
+       $charset = 'UTF-8'
+    }
     my $iconv_converter;
     eval {
         $iconv_converter = Text::Iconv->new($charset,"UTF-8") or
@@ -179,12 +183,9 @@ sub convert_to_utf8 {
             # if there's an Ã (0xC3), it's probably something
             # horrible, and we shouldn't try to convert it.
             if (defined $call_back_data and $call_back_data !~ /\x{C3}/) {
-                # this warning produces far too much useless output; elminating it
-                # warn "failed to convert to utf8 (charset: $charset, data: $data), but succeeded with ISO8859-1: ".encode_utf8($call_back_data);
                 return $call_back_data;
             }
         }
-        warn "failed to convert to utf8 (charset: $charset, data: $data)";
         # Fallback to encode, which will probably also fail.
         return __fallback_convert_to_utf8($data,$charset);
     }
@@ -203,6 +204,10 @@ sub __fallback_convert_to_utf8 {
      }
      # lets assume everything that doesn't have a charset is utf8
      $charset //= 'utf8';
+     ## if the charset is unknown, assume it's UTF-8
+     if ($charset =~ /unknown/i) {
+        $charset = 'utf8';
+     }
      my $result;
      eval {
         $result = decode($charset,$data,0);