IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web Perl Discussion :

Problème d'accent avec formulaire cgi


Sujet :

Web Perl

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut 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 .

    é ce trouve transformer en , j'ai tenté d'utilise Encode mais il n'est pas présent sur le serveur, la version de perl disponible est
    5.00503


    Voic comment je récupère les données envoyé par le client


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Salut,

    essaie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s/%([0-9A-Fa-f][0-9A-Fa-f])/chr hex $1/ge
    lami20j
    --
    lami20j

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Points : 99
    Points
    99
    Par défaut
    Sa ne fonctionne toujours pas , par contre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $s =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack("C",oct("0x$1"))/ge;
    marche très bien si les caractères sont en
    iso-8859-1

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 172
    Points : 208
    Points
    208
    Par défaut
    Re,

    Essaie pour voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    #! /usr/bin/perl
    #
    use warnings;
    use strict;
     
    print "Entrez un chaîne : ";
    chomp(my $enter = <STDIN>);
     
    sub encode {
            my $en = shift;
            $en =~ s/([^-a-f0-9_.!~*'()])/sprintf "%%%02X", ord($1)/gei;
            $en =~ tr/ /+/;
            return $en;
    }
    my $v = encode($enter);
    sub decode {
            my $ch = shift;
            $ch =~ tr/+/ /;
            $ch =~ s/%([0-9a-z]{2})/chr(hex($1))/eig;
            return $ch;
    }
    my $test = decode ($v);
    print "Initial: $enter\n";
    print "Codé: $v\n";
    print "Decodé: $test\n";
    le résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    lami20j@debian:~/forums/hardware$ perl accent.pl
    Entrez un chaîne : é è ë ê à ù ö
    Initial: é è ë ê à ù ö
    Codé: %E9%20%E8%20%EB%20%EA%20%E0%20%F9%20%F6
    Decodé: é è ë ê à ù ö
    --
    lami20j

Discussions similaires

  1. Problème d'accents avec Formulaire
    Par MicaelFelix dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/05/2007, 20h39
  2. [AJAX] Accents avec IE
    Par Darkenshin dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 18/01/2007, 17h25
  3. Problème d'accent avec fgets
    Par d.w.d dans le forum Langage
    Réponses: 2
    Dernier message: 31/03/2006, 07h37
  4. [utf-8] problème d'accents avec gtk+
    Par over_score dans le forum Général Python
    Réponses: 3
    Dernier message: 14/12/2005, 01h43
  5. Problèmes d'accent avec une connexion ODBC et ADO
    Par michael.jacques dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/03/2005, 15h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo