#!/usr/bin/perl -w use strict; use warnings; use CGI 3.48; use IO::Handle; STDOUT->autoflush(1); use Fcntl qw(:DEFAULT); use Encode qw(decode encode_utf8); (my $script = $0) =~ s/^.*[\\\/]//g; my $cgi = new CGI; my %work = ( chmod => ($^O =~ /mswin/i ? 0600 : 0666), speicher => 'test_utf_speicher.dat', endausgabe => 'test_utf_ausgabe.dat', ); # Verarbeitung if (defined $cgi->param('action') && $cgi->param('action') eq 'testinput') { $work{testtext} = $cgi->param('testtext'); # Zwischenspeichern sysopen($work{fh},$work{speicher},O_RDWR|O_CREAT,$work{chmod}) or die $!; binmode($work{fh}) or die $!; seek($work{fh},0,0) or die $!; print {$work{fh}} $work{testtext}; close($work{fh}); # wieder einlesen sysopen($work{fh},$work{speicher},O_RDWR|O_CREAT,$work{chmod}) or die $!; binmode($work{fh}) or die $!; seek($work{fh},0,0) or die $!; undef local $/; $work{eingelesen} = readline(scalar($work{fh})); close($work{fh}); # als UTF-8 ausgeben $work{utf8} = encode_utf8(decode("iso-8859-15",$work{eingelesen})); open $work{fh},'>',$work{endausgabe} or die $!; print {$work{fh}} $work{utf8}; close($work{fh}); $work{ausgabe} = <<__HTML__
Eingegeben wurde       : "$work{testtext}"
Wieder eingelesen wurde: "$work{eingelesen}"
__HTML__ ; } else { $work{ausgabe} = <<__HTML__
__HTML__ ; } # Ausgabe print STDOUT $cgi->new->header(-charset=>'ISO-8859-15').<<__HTML__ Test UTF $work{ausgabe} __HTML__ ;