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

Apache Discussion :

pas d'accents en réception de formulaire


Sujet :

Apache

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 87
    Points
    87
    Par défaut pas d'accents en réception de formulaire
    Bonjour,

    J'ai apache 2.059 sur un windows XP, et voici mon problème : un exemple sera plus explicatif :


    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <body>
        <?php
        echo $_GET['test']."<br />";
        ?>
        <form method="get" action="test.php">
            Saisir des accents comme ceux-ci : éèàù
            <input type="text" name="test" />
            <input type="submit" value="ok" />
        </form>
    </body>
    </html>

    Le libellè de l'input s'affiche correctement
    Saisir des accents comme ceux-ci : éèàù
    Mais quand on valide le formulaire en copiant collant le libellé dans le champ, les accents de la variable test ne s'affiche pas :
    Saisir des accents comme ceux-ci :
    Je ne vois pas d'où cela peut-t-il venir.
    J'ai positionné
    AddDefaultCharset off
    dans le httpd.conf, comme il est conseillé un peu partout...

    Merci d'avance pour votre aide

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Assure-toi que ton fichier test.php a été écrit et enregistré avec l'encodage iso-8859-1 : avec <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />, tu demandes au client de considérer finalement que la page est écrite avec l'encodage iso-8859-1. Donc le navigateur va poster le formulaire en encodant les caractères dans ce même jeu. Et si ce n'est pas ce qu'attend ton script cible, y a un pb de lecture des données.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 87
    Points
    87
    Par défaut
    Merci pour ta réponse.

    Afin d'être sur de l'encodage à l'enregistrement je l'ai enregistré dans Ultra Edit avec l'encodage iso-8859-1 (j'utilise eclipse pour le développement) et j'obtiens le même résultat : pas d'accent au retour du formulaire...

    Une autre idée peut-être ?...

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Dans ta page, ajoute ça pour voir, et donne nous le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $SERVER['HTTP_ACCEPT_CHARSET']; ?> : <?php echo base64_encode($_GET['test']); ?>///<?php echo base64_encode($_SERVER['QUERY_STRING']); ?>

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 87
    Points
    87
    Par défaut
    Voici donc le nouveau code :
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <body>
    <?php echo $_SERVER['HTTP_ACCEPT_CHARSET']; ?> :
    <?php echo base64_encode($_GET['test']); ?>///
    <?php echo base64_encode($_SERVER['QUERY_STRING']); ?>
    <?php
    echo "<br /><br />".$_GET['test']."<br />";
    ?>
    <form method="get" action="test.php">
    Saisir des accents comme ceux-ci : éèàù
    <input type="text" name="test" />
    <input type="submit" value="ok" />
    </form>
    </body>
    </html>
    et lorsque je saisi dans l'input :
    Saisir des accents comme ceux-ci : éèàù
    J'obtiens :
    ISO-8859-1,utf-8;q=0.7,*;q=0.7 : U2Fpc2lyIGRlcyBhY2NlbnRzIGNvbW1lIGNldXgtY2kgOiAg/// dGVzdD1TYWlzaXIrZGVzK2FjY2VudHMrY29tbWUrY2V1eC1jaSslM0ErJUU5JUU4JUUwJUY5Kw==

    Saisir des accents comme ceux-ci :

  6. #6
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    OK, y a clairement un pb côté serveur, le navigateur envoie bien les caractères en ISO-8859-1. Je ne vois pas trop d'où ça peut venir. Vérifie de nouveau que ton script PHP est bien enregistré en ISO-8859-1. Vérifie ensuite ton php.ini voir si y a pas un paramètre à la noix qui force la lecture des données en utf-8 ou autre.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 137
    Points : 87
    Points
    87
    Par défaut
    En effet c'était dans le php.ini :
    mbstring.http_input = auto
    Un point virgule devant, et zou c'est réglé!

    Merci Mac

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème de réception de formulaire
    Par oukok dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2007, 13h14
  2. [RegEx] ereg qui ne trouve pas les accents
    Par Sephiroth Lune dans le forum Langage
    Réponses: 6
    Dernier message: 29/03/2007, 18h05
  3. Réponses: 4
    Dernier message: 14/01/2007, 21h57
  4. Réponses: 1
    Dernier message: 08/11/2005, 09h03
  5. Réponses: 5
    Dernier message: 02/09/2005, 07h46

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