hi,
Der letzte Ansatz scheint mir eigentlich logisch, die Frage wäre aber: Welches Format haben eigentlich Daten zunächst, die in ein per CGI so
$cgi->header(-charset => 'UTF-8'),
$cgi->start_html(-encoding => 'UTF-8'),
$cgi->start_form(-method => 'post',
generiertes Formular eingegeben werden?
Das Form wird mit einem HTTP-Header "Content-type: text/html; charset=UTF-8" ausgeliefert. Sofern der Benutzer vor dem Submit die Kodierung nicht ändert:
Du bekommst UTF-8-Oktetten (bytesemantic, raw).
Mit
use CGI qw(-utf8);
Du bekommst UTF-8-kodierte Zeichenketten (charactersemantic).
Wenn Du UTF-8-Zeichen wieder ausgeben willst, auf STDOUT oder FileHandler, dürfen das keine UTF-8-kodierte Zeichenketten sein, sondern müssen UTF-8-Oktetten sein.
Perl unterscheidet das seit v5.6 (anno domini 2001).
Hotti