Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 97e60d52

Von Moritz Bunkus vor mehr als 14 Jahren hinzugefügt

  • ID 97e60d52d622e6eefe383acfe8e872d7d791493f
  • Vorgänger 94466d5c
  • Nachfolger b974593a

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.

Unterschiede anzeigen:

SL/Form.pm
203 203
  if (any { ref $param eq $_ } qw(Form HASH)) {
204 204
    foreach my $key (keys %{ $param }) {
205 205
      if (!ref $param->{$key}) {
206
        $param->{$key} = $iconv->convert($param->{$key});
206
        # Workaround for a bug: converting $param->{$key} directly
207
        # leads to 'undef'. I don't know why. Converting a copy works,
208
        # though.
209
        $param->{$key} = $iconv->convert("" . $param->{$key});
207 210
      } else {
208 211
        _recode_recursively($iconv, $param->{$key});
209 212
      }
......
212 215
  } elsif (ref $param eq 'ARRAY') {
213 216
    foreach my $idx (0 .. scalar(@{ $param }) - 1) {
214 217
      if (!ref $param->[$idx]) {
215
        $param->[$idx] = $iconv->convert($param->[$idx]);
218
        # Workaround for a bug: converting $param->[$idx] directly
219
        # leads to 'undef'. I don't know why. Converting a copy works,
220
        # though.
221
        $param->[$idx] = $iconv->convert("" . $param->[$idx]);
216 222
      } else {
217 223
        _recode_recursively($iconv, $param->[$idx]);
218 224
      }

Auch abrufbar als: Unified diff