Leser: 5
10 Einträge, 1 Seite |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#!/usr/bin/perl -w -CO use strict; use utf8; use CGI qw/:standard/; my $URLRAWDATA = ""; if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $URLRAWDATA, $ENV{'CONTENT_LENGTH'}); } else { $URLRAWDATA = $ENV{'QUERY_STRING'}; } my %URLDATA; my @data = split (/&/, $URLRAWDATA); for (@data) { my ($key, $value) = split /=/; $value =~ s/%0D%0A/<\|br\|>/g; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $URLDATA{$key} = $value; } print "Content-type: text/html\n\n"; print "äöü "; # richtige Umlaute: äöü print $URLDATA{'name'}; # fehlerhafte Umlaute: äöü
QuoteCode: (dl )print "Content-type: text/html\n\n";
print "Content-Type: text/html; charset=utf-8\n\n";
1 2 3 4 5 6 7
use CGI; my $q = CGI->new; $q->charset('UTF-8'); print $q->header(); print $q->param('name');
1 2 3 4 5 6 7 8 9
use CGI; use Encode qw(decode_utf8); my $q = CGI->new; $q->charset('UTF-8'); print $q->header(); my $name = decode_utf($q->param('name')) print $name;
renee+2008-09-10 11:44:33--Das -C in der Shebang-Zeile ist nutzlos, weil da die Standard-Streams schon aufgebaut sind. In Perl 5.10 gibt's da auch 'nen Fehler (oder zumindest 'ne Warnung)...
renee+2008-09-10 11:44:33--Das -C in der Shebang-Zeile ist nutzlos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl -w
use strict;
use utf8;
use CGI;
use Encode qw(decode_utf8);
binmode STDOUT, ':encoding(UTF-8)';
binmode STDIN, ':encoding(UTF-8)';
my $q = CGI->new;
$q->charset('UTF-8');
print $q->header();
print "äöü";
print decode_utf8($q->param('name'));
JoeD+2008-09-10 14:40:54--Jetzt muss ich einen UTF-8-String in iso-8859-1 umwandeln, da ich daraus einen Dateinamen machen will. Das funktioniert mit Encode::from_to($str, 'utf8', 'iso-8859-1') leider nicht. Wie denn?
Quote(Es geht nicht nur um einen Dateinamen sondern auch um Mailversand, den ich nicht mit UTF-8 durchführen möchte, obwohl die meisten Mailprogramme ja UTF-8 anzeigen können...)
10 Einträge, 1 Seite |