Tach!
Ich kann dir nicht Perl-spezifisch sondern nur allgemein antworten.
Das verarbeitende Script schreibt per
open my $test, ">:utf8", $file;
Ein Script kann nur dann in der korrekten Ziel-Kodierung ausgeben, wenn auch die Quell-Kodierung bekannt und korrekt ist. Es gibt kein "egal was ist, mach UTF-8". Das würde voraussetzen, dass man zweifelsfrei Kodierungen erkennen könnte.
Es gibt aber offensichtlich trotzdem Probleme (Umlaute), die hinterher nicht korrekt dargestellt werden. Nun weiß ich allerdings nicht, wo sonst noch UTF-8-Encoding gesetzt werden könnte.
Mach Kontrollausgaben. Lass dir die Werte in hexadezimaler Form ausgeben. Für PHP kann man dazu eine URL-Kodierung sehr gut missbrauchen. Das geht sicher in Perl auch.
- Täusche ich mich, oder ist es tatsächlich nicht vorgesehen, via CGI-Modul für Formulare die übliche Option "accept-charset" zu setzen?
Die Frage kann ich nicht beantworten. Im Allgemeinen braucht man diesen Parameter nicht und er funktioniert auch nicht in allen (alten?) Browsern. Es reicht, der Seite eine Kodierung anzugeben und der Browser wird diese zum Zurücksenden von Formulardaten verwenden.
- Das Schreiben per ">:utf8" klappt nicht wirklich- wie ließe sich das überprüfen?
Mit Kontrollausgaben. Wenn es eine Datei ist, nimm einen Hexeditor zum anschauen.
- Schließlich bestätigte sich noch einer der elenden Verdachtsmomente: Das verarbeitende Script ist nicht in UTF-8 gespeichert (use utf8 ist gesetzt).
Also habe ich es auf die Schnelle per Windows-Editor so gespeichet/BOM gesetzt, das führt aber beim Test zu Error 500- das log sagt:
(8)Exec format error
Die BOM ist bei UTF-8 nicht notwendig und wie du siehst, kommt sie dir hier in die Quere. Lass sie weg.
dedlfix.