CPAN: UTF-8 dekodieren (?)

Beitrag lesen

Dein Formular ist offensichtlich mangelhaft. Wieso zeigst du nicht deinen ganzen Code? Willst du uns Helfern absichtlich mit Glaskugelorakeln das Leben schwer machen?

Das funktioniert:

  
#!/usr/bin/env perl  
use CGI qw();  
use Encode qw(decode encode);  
use HTML::Entities qw(encode_entities);  
  
my $cgi = CGI->new;  
my $characters = decode 'UTF-8', $cgi->param('data'), Encode::FB_CROAK | Encode::LEAVE_SRC;  
# hier $characters verarbeiten  
my $octets = encode 'UTF-8', $characters, Encode::FB_CROAK | Encode::LEAVE_SRC;  
  
print $cgi->header(-type => 'application/xhtml+xml', -charset => 'UTF-8'),  
$cgi->start_html(-encoding => 'UTF-8'),  
$cgi->start_form(-method => 'post', '-accept-charset' => 'UTF-8'),  
$cgi->input({-type => 'text', name => 'data'}),  
$cgi->input({-type => 'submit'}),  
$cgi->end_form,  
$cgi->hr,  
encode_entities($octets, q(<>&")),  
$cgi->end_html;

Und nun die übliche Belehrung: CGI ist schon lange keine zeitgemäße Technologie mehr, und CGI.pm hat ein abscheuliches Interface, das zu schwierig zu bedienen ist, um richtige Ergebnisse zu erhalten. Steige um auf PSGI und ein modernes Webframework.

(Und die dumme Frage: Kann man eigentlich doppelt DEkodieren?)

Versuch es doch einmal! Was beobachtest du? Welche Schlüsse ziehst du daraus?