Projekt

Allgemein

Profil

Aktionen

Unterstützung #107

offen

Formulareingabe auf nicht UTF-8 kodierte Zeichen prüfen

Von Jan Büren vor mehr als 9 Jahren hinzugefügt. Vor etwa 1 Jahr aktualisiert.

Status:
Neu
Priorität:
Normal
Zugewiesen an:
-
Zielversion:
-
Beginn:
17.11.2015
Abgabedatum:
% erledigt:

0%

Geschätzter Aufwand:

Beschreibung

Ich hab einmal, zum Ausprobieren folgenden Check beim Speichern von Angeboten eingetragen.

use Encode;
use Carp;

(...)

      eval {
        decode("UTF-8", $form->{"longdescription_$i"}, Encode::FB_CROAK);
        die if $@;
        1;
      } or do {
        croak "Ungültige Zeichen im Langtext bei Position $i.  Fehlerhafte Stelle innerhalb dieser Eingabe:" . $form->{"longdescription_$i"};
      };

Und komme dann zu einer Fehlermeldung wie im Anhang beschreiben.

Ich finde das Verhalten um Längen besser, als die lange Fehlerkette von LaTeX, vom Anwender, "parsen" zu lassen.

Im Detail kann/sollte die Prüfung auch anders aussehen (neuer Controller?).
Was ich mir noch wünschen würde, wäre die genaue Stelle des fehlerhaften Zeichens einzugrenzen.

Das hier beschriebene FB_QUIET oder FB_DEFAULT Fehlerhandling lieferte bei mir immer nur die Meldung Zeichenkette enthält wide character, o.ä. zurück:

http://perldoc.perl.org/Encode.html#Handling-Malformed-Data

Offen zur Diskussion ...


Dateien

unsichtbare-steuerzeichen-fehler-eingrenzen.png (19,7 KB) unsichtbare-steuerzeichen-fehler-eingrenzen.png Fehlermeldung Jan Büren, 17.11.2015 13:59
diff-OE-pm.png (59,9 KB) diff-OE-pm.png Jan Büren, 17.11.2015 14:02
Aktionen

Auch abrufbar als: Atom PDF