From: Moritz Bunkus Date: Thu, 4 Mar 2010 09:50:36 +0000 (+0100) Subject: Iconv-Problem behoben X-Git-Tag: release-2.6.1beta1~33^2~12 X-Git-Url: http://wagnertech.de/git?a=commitdiff_plain;h=97e60d52d622e6eefe383acfe8e872d7d791493f;p=kivitendo-erp.git Iconv-Problem behoben 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. --- diff --git a/SL/Form.pm b/SL/Form.pm index e0207243f..82f073ed7 100644 --- a/SL/Form.pm +++ b/SL/Form.pm @@ -203,7 +203,10 @@ sub _recode_recursively { 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}); } @@ -212,7 +215,10 @@ sub _recode_recursively { } 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]); }