Problème d'accent avec formulaire cgi
Bonjour j'ai un gros soucie avec les accents, j'ai une page web qui appel un script CGI perl qui traite les données ce script envoie un mail au client jusque la tout vas bien sauf les accents :cry: .
é ce trouve transformer en :twisted: , j'ai tenté d'utilise Encode mais il n'est pas présent sur le serveur, la version de perl disponible est :cry: :cry:
Voic comment je récupère les données envoyé par le client
Code:
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| #====================================================================#
# Réception des données #
#====================================================================#
sub receivepost {
my %postdata;
my ($len,$d,$data,$nom,$valeur);
if ($ENV{'REQUEST_METHOD'} =~ /post/i) {
# Longueur de l envoi
$len = $ENV{'CONTENT_LENGTH'};
$data = '';
# On lit les données envoyées
if (read(STDIN,$data,$len) != $len) {
# tout n est pas lu ... erreur de transmission
print "Location: error.htm\n\n";
die("Error reading 'POST' data\n") ;
}
# séparation de la chaine par paires
foreach $d (split('&',$data)) {
# séparer les paires nom=valeur
($nom,$valeur) = split('=',$d);
$nom = url_decode($nom);
$valeur = url_decode($valeur);
# $valeur = encode_entities($valeur);
# ranger les paires dans %postdata
$postdata{$nom} = $valeur;
}
}
return %postdata ;
}
#====================================================================#
# Décodage des données transmise #
#====================================================================#
sub url_decode {
my $s = shift;
$s =~ tr/+/ /;
$s =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C",oct("0x$1"))/ge;
return $s;
} |
j'invoque receivepost() comme ceci
Code:
1 2 3 4 5
| if ($ENV{'REQUEST_METHOD'} =~ /post/i ) {
my %form = receivepost();
traitement ...
} |
J'ai beau chercher je ne trouve pas de solution a ce problème d'accent
le mail est envoyé en iso-8859-1
Code:
1 2 3
| print MAIL "Mime-Version: 1.0\n";
print MAIL "Content-Type: text/html; charset=ISO-8859-1\n";
print MAIL "Content-Transfer-Encoding: 7-bit\n"; |
merci de votre aide