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

JavaScript Discussion :

encodage entre un formulaire XHTML et javascript


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut encodage entre un formulaire XHTML et javascript
    Bonjour,

    J'essaye de reproduire cet exemple dans un site :

    http://ajax-apis.appspot.com/two-page-search-alt

    Il s'agit de mettre en place une recherche google personnalisée, mais j'ai un problème quant aux accents, bien que tout fonctionne dans l'exemple et que les codes soient à mon sens similaires.

    Mon formulaire:

    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
    <script type="text/javascript"> 
     
    function inputFocus() {
      document.getElementById('query-input').style['background'] = '';
    }
     
    function inputBlur() {
      var queryInput = document.getElementById('query-input');
      if (!queryInput.value) {
        queryInput.style['background'] = 'white url(<a href="http://www.google.com/coop/images/google_custom_search_watermark.gif" target="_blank">http://www.google.com/coop/images/go..._watermark.gif</a>) no-repeat 0% 50%';
      }
    }
    </script> 
     
    <form action="./recherche" method="GET" accept-charset="UTF-8"> 
          <input name="q" size="31" id="query-input" style="border: 1px solid rgb(126, 157, 185); padding: 2px;" onfocus="inputFocus();" onblur="inputBlur();" type="text" />
          <input name="sa" value="Rechercher" type="submit" />
    </form>
    Affichage des résultats :
    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
     
    <script src="http://www.google.com/jsapi?key=maclé" type="text/javascript"></script> 
        <script type="text/javascript"> 
          google.load('search', '1');
     
          function getQuery() {
            var url = '' + window.location;
            var queryStart = url.indexOf('?') + 1;
            if (queryStart > 0) {
              var parts = url.substr(queryStart).split('&');
              for (var i = 0; i < parts.length; i++) {
                if (parts[i].substr(0, 1) == 'q') {
                  return unescape(parts[i].split('=')[1].replace(/\+/g, ' '));
                }
              }
            }
            return '';
          }
     
          function onLoad() {
     
            var customSearchControl = new google.search.CustomSearchControl('005584578441396243232:epked-4geyy');
     
    customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
     
            // Draw the control in content div
            customSearchControl.draw('cse-search-results');
     
            // Run a query
            customSearchControl.execute(getQuery());
          }
     
          google.setOnLoadCallback(onLoad);
        </script>
    La recherche personnalisée fonctionne parfaitement, mais quand j'utilise le formulaire ci-dessus, les accents sont remplacés par des suites de caractères qui ne sont ensuite pas rétablies par le 'unescape'. Par exemple, une recherche sur le mot 'vélo' appellera la page 'http://www.coord21.ch/test_cmsms/recherche/?q=v%25C3%25A9lo&sa=Rechercher' et la recherche sur v%C3%A9lo ne donnera rien...

    Est-ce que quelqu'un saurait me dire ce qui se passe ? Je mets un lien vers mon site : http://www.coord21.ch/test_cmsms/ pour les motivés.

    Merci !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    ton fichier lui même est il encodé en utf8 ?
    le html comporte-t-il une balise meta charset utf-8 ?
    la page de traitement sur le serveur est elle en utf-8 ? renvoie-t-elle un header charset utf8 ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    J'utilise CMSMS et toutes les pages que je crée ont une balise meta charset utf-8. Par contre, j'ai regardé les fichiers sur mon serveur et il me semble qu'ils sont tous encodés en ANSI. Mais d'un autre côté, le module de recherche de CMSMS met en place ce formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <form id="cntnt01moduleform_1" method="get" action="http://www.coord21.ch/test_cmsms/public_dev_durable/" class="cms_form">
    <div class="hidden">
    <input name="mact" value="Search,cntnt01,dosearch,0" type="hidden">
    <input name="cntnt01returnid" value="59" type="hidden">
    </div>
     
    <label for="cntnt01searchinput">Recherche:&nbsp;</label><input class="search-input" id="cntnt01searchinput" name="cntnt01searchinput" size="20" maxlength="50" value="Recherche..." onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;" type="text"><input class="search-button" name="submit" value="OK" type="submit">
     
    </form>
    ... et il n'a pas de problèmes d'accents.

    J'ai checké mon serveur (infomaniak) et j'ai trouvé les infos suivantes:

    HTTP Headers Information:
    Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7

    Apache Environment
    HTTP_ACCEPT_CHARSET ISO-8859-1,utf-8;q=0.7,*;q=0.7

    Le codage de mon moteur de recherche est également utf-8.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    et il me semble qu'ils sont tous encodés en ANSI.
    => convertis les en utf8

    et le defaultcharset du serveur ?
    colel eventuellement un htaccess dans le repertoire si tu ne veux pas basculer le serveur entier
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    Le default charset du serveur est sur 'none', mais je ne vois pas comment le modifier. Je ne vois nulle part où trouver le fichier phpinfo...

    Mais je ne suis vraiment pas sûr que j'aie envie de modifier l'encodage des milliers de fichiers de CMSMS. Je risque d'avoir mille merdes dans tous les sens et le fait qu'ils soient codés en ANSI ne devraient pas m'empêcher de faire ce que je veux faire. Après tout, tout roule pour le module Search, donc ça me paraît disproportionné...

    Y a pas une fonction javascript pour m'aider ou quelque chose à faire sur l'objet de la recherche avant d'appeler la page des résultats ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    dans http.config du serveur ...
    ou ajoute un fichier htaccess avec l'instruction default charset dasn le repertoire
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    Merci pour ton aide !

    Mais je me suis encore renseigné sur unescape et j'ai vu qu'il fallait utiliser decodeURI à la place, mais ça suffisait pas...

    PAR CONTRE, utiliser les deux en cascade donne le résultat rechercher !!! Alors, je crois pas que je vais m'embêter à modifier le .htaccess...

    Merci quand même !

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    encodeURIcomponent <=> decodeURIcompononet
    escape <=> unescape ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    Qu'est-ce que tu entends par là ? J'ai pas fait de encodeURI ou de escape avant d'envoyer l'objet de la recherche, donc ça me semble pas être une évidence... Pis, c'est apparemment pas nécessaire ailleurs.

    En regardant le code javascript, je me suis quand même demandé s'il n'était pas bien compliqué pour récupérer une simple valeur... Le code vient de Google, mais est-ce que tu saurais me dire pourquoi ils n'ont pas utilisé une variable $_GET à la place ou peut-être même $_POST ?

  10. #10
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    j'entends pas là que ces fonctions sont des bijections vont de paire
    si tu fais un unescape sur un encodeURIcomponent tu peux avoir des surprises
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2010
    Messages : 7
    Par défaut
    Bon là, je fais un unescape suivi d'un decodeURI alors que j'ai rien fait avant, moi-même. Donc je sais pas vraiment quoi en penser, même si je m'attends pas vraiment à de grosses surprises... Bref, on verra bien à l'utilisation.

  12. #12
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    method="GET" accept-charset="UTF-8"
    le navigateur encode tout seul ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. Problème d'encodage des entrées de formulaire
    Par verbose dans le forum Struts 1
    Réponses: 2
    Dernier message: 04/07/2008, 14h36
  2. Réponses: 2
    Dernier message: 29/05/2007, 10h55
  3. [C#] Transférer des informations entre 2 formulaires
    Par monoeilouais dans le forum Windows Forms
    Réponses: 2
    Dernier message: 14/07/2004, 17h21
  4. [jsp]controles des formulaires servlet ou javascript ?
    Par alexandra_ape dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 05/07/2004, 14h46
  5. touche entrée dans formulaire
    Par pram dans le forum XMLRAD
    Réponses: 8
    Dernier message: 15/04/2003, 09h13

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