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

Servlets/JSP Java Discussion :

[AJAX] Problèmes avec les caractères accentués


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Points : 59
    Points
    59
    Par défaut [AJAX] Problèmes avec les caractères accentués
    Bonjour,

    J'utilise la méthode AJAX pour faire des requêtes vers le serveur sans avoir à recharger la page et récupérer le résultat du code source d'une URL dans un champ de ma page HTML. L'ennui est que je récupère des caractères bizarres pour les accents. Je pense que c'est un problème de conversion de caractère et qu'il faut appeler une certaine méthode dans l'objet http_request.

    Un développeur peux m'aider ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    Bonjour,

    dans ta page html (celle qui utilise AJAX) as tu précisé son encodage ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    Sinon tu peux essayer de le préciser lors de l'envoi de ta requette :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http_request.send("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>");

  3. #3
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Points : 59
    Points
    59
    Par défaut
    Avec ta proposition de solution, ça ne fonctionne toujours pas( que ce soit charset=UTF-8 ou charset = ISO-8859-1 ). Je te donne mon source HTML pour que tu puisses, si tuveux bien, l'essayer et résoudre ainsi mon problème. Actuellement, je reste bloqué sur ce problème. Merci d'avance
    (j'utilise IE6 )

    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <html>
    <head>
    <script type="text/javascript" language="javascript">
        var http_request = false;
        function makeRequest() {
            var url = 'http://blog.developpez.com/?blog=' + document.getElementById("blog").value;
            http_request = false;
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    http_request.overrideMimeType('text/xml');
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
     
            if (!http_request) {
                alert('Abandon :( Impossible de créer une instance XMLHTTP');
                return false;
            }
            http_request.onreadystatechange = alertContents;
            http_request.open('GET', url, true);
            http_request.send('<META HTTP-EQUIV="Content-Type" content="text/html; charset=ISO-8859-1">');
        }
     
        function alertContents() {
            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                    document.getElementById("in1").value = http_request.responseText;
                } else {
                    alert('Un problème est survenu avec la requête.');
                }
            }
       }
    </script>
    </head>
    <body>
    <META HTTP-EQUIV="Content-Type" content="text/html; charset=ISO-8859-1">
    <input type="button" onclick="makeRequest()" value="envoyer">
    <SELECT id="blog">
    		<OPTION VALUE="1">1</OPTION>
    		<OPTION VALUE="18">18</OPTION>
    </SELECT>
     
    <textarea id="in1" rows="100" cols="200"></textarea>
    </body>
    </html>
    [ Modéré par SEMPERE Benjamin ]
    Ajout des balises code
    Les Règles du Forum

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 274
    Points : 307
    Points
    307
    Par défaut
    effectivement j'ai essayé ton code.

    Tout se passe comme si le flux récupéré était encodé (UTF-8) quel que soit le format de la page html récupérée.

    J'ai vu qu'en PHP il existait une methode qui permettait de décoder de l'UTF8 (utf8_decode()), il n'existe pas de telles méthodes en javascript.


    Une solution serait peut être d'utiliser une servlet pour faire la récupération du source de la page, puis de réaliser la communication serveur/client avec AJAX en précisant l'encodage.

  5. #5
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Points : 59
    Points
    59
    Par défaut
    J'ai déjà remplacé la requête vers l'URL d'une page HTML par une requête vers une servlet au sein d'une page JSP mais le résultat est toujours le même. Que veux tu dire par réaliser la communication serveur/client avec AJAX en précisant l'encodage ?

    Merci pour ton aide

  6. #6
    Membre averti Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Points : 331
    Points
    331
    Par défaut
    encode tes page en UTF-8 et non pas en ISO-8859-1.
    Tu remplaces "ISO-8859-1" par "UTF-8" dans ton code Javascript et HTML
    Cele devrait etre mieux.

  7. #7
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Points : 59
    Points
    59
    Par défaut
    J'ai tout remplacé par UTF-8 mais ce n'est pas mieux, désolé.

  8. #8
    Membre averti Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Points : 331
    Points
    331
    Par défaut
    les accents sont ils "HTML encoded" ?
    &eacute; &egrave;

  9. #9
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Points : 59
    Points
    59
    Par défaut
    Dans le source que je récupère avec mon exemple donné ci-dessus, on peut voir que les é sont parfois codés de manière différente. Par exemple, le mot développeurs est codé soit par d?loppeurs, soit par d&eacute;veloppeurs.

    Peux tu svp reprendre l'exemple que j'ai donné plus loin ci-dessus pour le tester de ton côté

    Merci d'avance

  10. #10
    Membre averti Avatar de magnus2005
    Profil pro
    Ingenieur SI
    Inscrit en
    Avril 2005
    Messages
    454
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingenieur SI

    Informations forums :
    Inscription : Avril 2005
    Messages : 454
    Points : 331
    Points
    331
    Par défaut
    desole le httprequester ne fonctionne pas sur le local

    log de firefox

    Error: uncaught exception: Permission denied to call method XMLHttpRequest.open
    .

    du coup que je peux pas tester pour le moment
    (j ai qu une SUSE 9.1)

  11. #11
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 175
    Points : 59
    Points
    59
    Par défaut
    EUREKA !!!!!!!!!!!!!!

    Enfin cela fonctionne. En fait, il faut passer par une servlet dans lequel on mentionne le type d'encodage utilisé( je crois que l'idée a été émise dans un des messages précédents ). Pour ceux que ça interesse, voici la méthode qu'il faut appeler dans la servlet:

    resource.setContentType("text/html;charset=mon_encodage_de_sortie");

    Merci à tous

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/11/2010, 08h27
  2. Problème avec les caractères accentués
    Par abbd dans le forum Windows Forms
    Réponses: 6
    Dernier message: 13/02/2009, 17h40
  3. [MySQL] Probléme avec les caractéres accentués suite à un export
    Par UNi[FR] dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 17/05/2006, 09h10
  4. [SQL-Server] ms sql server et php : problème avec les caractères accentués
    Par stephane9422 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/12/2005, 17h45
  5. Réponses: 5
    Dernier message: 04/09/2005, 12h34

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