Soll der Inhalt von $form mit Iconv von UTF-8 nach ISO-8859-15
konvertiert werden (z.B. weil der GET-Parameter INPUT_ENCODING auf
UTF-8 gesetzt und $dbcharset = 'ISO-8859-15' ist), so gibt
$iconv->convert($form->{key}) immer undef zurück. Ich weiß nicht
warum.
Übergibt man $iconv->convert() hingegen eine Kopie eines solchen
Wertes aus $form, so wird das erwartete Ergebnis erzeugt.
if (any { ref $param eq $_ } qw(Form HASH)) {
foreach my $key (keys %{ $param }) {
if (!ref $param->{$key}) {
if (any { ref $param eq $_ } qw(Form HASH)) {
foreach my $key (keys %{ $param }) {
if (!ref $param->{$key}) {
- $param->{$key} = $iconv->convert($param->{$key});
+ # Workaround for a bug: converting $param->{$key} directly
+ # leads to 'undef'. I don't know why. Converting a copy works,
+ # though.
+ $param->{$key} = $iconv->convert("" . $param->{$key});
} else {
_recode_recursively($iconv, $param->{$key});
}
} else {
_recode_recursively($iconv, $param->{$key});
}
} elsif (ref $param eq 'ARRAY') {
foreach my $idx (0 .. scalar(@{ $param }) - 1) {
if (!ref $param->[$idx]) {
} elsif (ref $param eq 'ARRAY') {
foreach my $idx (0 .. scalar(@{ $param }) - 1) {
if (!ref $param->[$idx]) {
- $param->[$idx] = $iconv->convert($param->[$idx]);
+ # Workaround for a bug: converting $param->[$idx] directly
+ # leads to 'undef'. I don't know why. Converting a copy works,
+ # though.
+ $param->[$idx] = $iconv->convert("" . $param->[$idx]);
} else {
_recode_recursively($iconv, $param->[$idx]);
}
} else {
_recode_recursively($iconv, $param->[$idx]);
}