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;
sub encode_utf8_structure {
++$depth;
my @ret;
- for my $_ (@_) {
+ for $_ (@_) {
if (ref($_) eq 'HASH') {
push @ret, {encode_utf8_structure(%{$depth == 1 ? dclone($_):$_})};
}
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
# 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}/) {
- 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);
}
}
# 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);