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

jQuery Discussion :

Encodage des caractères accentués


Sujet :

jQuery

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut Encodage des caractères accentués
    Bonjour,

    Je rencontre un problème d'encodage avec les caractères accentués.
    J'utilise la fonction JQuery AJAX pour enregistrer les données d'un formulaire dans une base de données.

    J'utilise une page HTML pour mon formulaire et le format d'encodage de cette page est iso-8859-1 et est déclaré de la façon suivante :
    <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" />
    J'utilise une page ASP (JScript) pour la sauvegarde du formulaire dans une base de données SQL Server et le format d'encodage est iso-8859-1 et est déclaré de la façon suivante :
    Response.Charset = "iso-8859-1";
    Et pourtant si mon formulaire contient par exemple un é alors la valeur enregistrée sera é

    Ci-dessous un extrait de ma fonction AJAX JQuery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $.ajax({
        type: "POST",
        url: "enreg.asp",
        scriptCharset: "iso-8859-1", 
        data:$("form").serialize(),
        success: function(msg){
                alert('save ok')
           },
           error: function(event, request, settings){
                alert('save ko')                                   
           }
    });
    Une idée ?
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    scriptCharset (String): Only for requests with 'jsonp' or 'script' dataType and GET type. Forces the request to be interpreted as a certain charset. Only needed for charset differences between the remote and local content.
    Le scriptCharset n'est peut-être pas utile ici ?

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par danielhagnoul Voir le message
    Bonsoir.

    Le scriptCharset n'est peut-être pas utile ici ?
    Bonjour,

    J'ai essayé sans le scriptCharset et cela ne change rien, j'ai toujours le même problème.

    Merci pour la réponse.

  4. #4
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Le navigateur gere le texte en unicode et effectue toujours les requetes ajax en UTF-8
    Il faut re-convertir le texte coté serveur
    http://fr3.php.net/manual/fr/function.iconv.php

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Citation Envoyé par Gruik Voir le message
    Le navigateur gere le texte en unicode et effectue toujours les requetes ajax en UTF-8
    Il faut re-convertir le texte coté serveur
    http://fr3.php.net/manual/fr/function.iconv.php
    Bonjour,

    Comment reconvertir en UTF-8 coté serveur, sachant que je suis en ASP et non en PHP donc la fonction iconv ne fonctionne pas ?

    J'ai trouvé une solution pas très propre qui consiste à faire la conversion via la fonction suivante :
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    function Utf8Iso(vsStr) {
     
         var strTemp = new String(vsStr);
     
         strTemp = strTemp.replace(/ç/g,"ç");
         strTemp = strTemp.replace(/ä§/g,"ç");
         strTemp = strTemp.replace(/é/g,"é");
         strTemp = strTemp.replace(/ä©/g,"é");
         strTemp = strTemp.replace(/è/g,"è");
         strTemp = strTemp.replace(/ä¨/g,"è");
         strTemp = strTemp.replace(/ê/g,"ê");
         strTemp = strTemp.replace(/äª/g,"ê");
         strTemp = strTemp.replace(/ë/g,"ë");
         strTemp = strTemp.replace(/ä«/g,"ë");
         strTemp = strTemp.replace(/Ã /g,"Ê");
         strTemp = strTemp.replace(/ä /g,"Ê");
         strTemp = strTemp.replace(/Ã /g,"Ë");
         strTemp = strTemp.replace(/ä /g,"Ë");
         strTemp = strTemp.replace(/î/g,"î");
         strTemp = strTemp.replace(/ä®/g,"î");
         strTemp = strTemp.replace(/ï/g,"ï");
         strTemp = strTemp.replace(/ä¯/g,"ï");
         strTemp = strTemp.replace(/ì/g,"ì");
         strTemp = strTemp.replace(/Ã /g,"Î");
         strTemp = strTemp.replace(/ä /g,"Î");
         strTemp = strTemp.replace(/ò/g,"ò");
         strTemp = strTemp.replace(/ä²/g,"ò");
         strTemp = strTemp.replace(/ô/g,"ô");
         strTemp = strTemp.replace(/ä´/g,"ô");
         strTemp = strTemp.replace(/ö/g,"ö");
         strTemp = strTemp.replace(/ä¶/g,"ö");
         strTemp = strTemp.replace(/õ/g,"õ");
         strTemp = strTemp.replace(/ó/g,"ó");
         strTemp = strTemp.replace(/ø/g,"ø");
         strTemp = strTemp.replace(/äµ/g,"õ");
         strTemp = strTemp.replace(/ä³/g,"ó");
         strTemp = strTemp.replace(/ä¸/g,"ø");
         strTemp = strTemp.replace(/Ã /g,"Ô");
         strTemp = strTemp.replace(/ä /g,"Ô");
         strTemp = strTemp.replace(/Ã /g,"Ö");
         strTemp = strTemp.replace(/ä /g,"Ö");
         strTemp = strTemp.replace(/Ã /g,"à");
         strTemp = strTemp.replace(/ä /g,"à");
         strTemp = strTemp.replace(/â/g,"â");
         strTemp = strTemp.replace(/ä¢/g,"â");
         strTemp = strTemp.replace(/ä/g,"ä");
         strTemp = strTemp.replace(/ä¤/g,"ä");
         strTemp = strTemp.replace(/Ã¥/g,"å");
         strTemp = strTemp.replace(/ä¥/g,"å");
         strTemp = strTemp.replace(/Ã /g,"Â");
         strTemp = strTemp.replace(/ä /g,"Â");
         strTemp = strTemp.replace(/Ã /g,"Ä");
         strTemp = strTemp.replace(/ä /g,"Ä");
         strTemp = strTemp.replace(/ù/g,"u");
         strTemp = strTemp.replace(/û/g,"û");
         strTemp = strTemp.replace(/ü/g,"ü");
         strTemp = strTemp.replace(/ä¼/g,"ü");
         strTemp = strTemp.replace(/Ã /g,"Û");
         strTemp = strTemp.replace(/Ã /g,"Ü");
         strTemp = strTemp.replace(/ä¹/g,"u");
         strTemp = strTemp.replace(/ä»/g,"û");
         strTemp = strTemp.replace(/ä¼/g,"ü");
         strTemp = strTemp.replace(/ä¼/g,"ü");
         strTemp = strTemp.replace(/ä /g,"Û");
         strTemp = strTemp.replace(/ä /g,"Ü");
         strTemp = strTemp.replace(/ò/g,"ñ");
         strTemp = strTemp.replace(/ñ/g,"ñ");
     
         return (strTemp);
     
    }
    C'est pas glop, donc si quelqun à mieux je suis preneur...

    Merci pour la réponse.

  6. #6
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonsoir.

    J'ai trouvé ce lien : http://encosia.com/2008/06/05/3-mist...h-aspnet-ajax/ qui conduit à d'autres sur le même sujet.

    Il pourra peut-être vous aider.

    J'ai remarqué que vous ne précisez pas le dataType dans votre code.

  7. #7
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Ah désolé, j'avais pas vu pour l'ASP

    Je connais pas, mais il doit y avoir bien mieux
    Au pire un remplacement manuel comme vous avez fait, mais en moins bourrin (genre avec un tableau, et sans les expression régulieres si c'est possible)

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Gruik Voir le message
    Le navigateur gere le texte en unicode et effectue toujours les requetes ajax en UTF-8
    Il faut re-convertir le texte coté serveur
    http://fr3.php.net/manual/fr/function.iconv.php
    Pas tout à fait. Il est possible de modifier la plupart des en-têtes HTTP via la méthode setRequestHeader de l'objet XMLHttpRequest, ainsi que dans la réponse d'inclure un header approprié. Il est donc tout à fait possible de communiquer via Ajax en ISO-8859-1

  9. #9
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 729
    Points
    1 729
    Par défaut
    Ah oui, mais je me souviens du vrai problème
    C'était pas la requete ajax en elle meme, mais la fonction encodeURIComponent() qui sort forcement de l'utf-8 (et qui est utilisé par jQuery je pense pour la création de la querystring)
    On peut utiliser escape() mais escape() est déconseillé par rapport à la gestion des '+'

  10. #10
    jnore
    Invité(e)
    Par défaut
    Bonsoir à tous,

    C'est tout à fait le genre de problème que j'ai rencontré, mais en PHP.
    Si effectivement les données envoyées sont encodées avec EncodeURIComponent (qui envoie bien de l'UTF8), alors il faut qu'il les décode coté ASP avec l'équivalent de PHP qui est utf8_decode().

    Par contre, la méthode, je ne la connais pas, il faudrait demander aux experts de l'ASP.

    Dans l'idéal, il aurait fallu que la BDD soit encodée en UTF8, mais bon, la modif n'est pas forcément aisée.

  11. #11
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Bonjour.

    je crois qu'en asp il n'existe malheureusement pas de fonction de ce type sauf en .net qui propose responseEncoding=UTF-8.

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut [RESOLU] Problème encodage des caractères accentués
    Bonjour,

    Merci à tous pour votre aide.

    J'ai résolu le problème en utilisant les fonctions encodeURI pour le passage de paramètres et decodeURI pour la récupération des paramètres.

  13. #13
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    Fausse joie, cela ne fonctionne pas complètement...

    En fait si dans mon formulaire il y a une date cela ne fonctionne plus !
    La date est convertie côté serveur et cela provoque une erreur lors de l'enregistrement en base : le type ne correspond pas.

    Ex :
    Avec l'encodeURI le 16/09/2009 devient 16%2F09%2F2009

    Comment puis-je faire ?

    Quelle est le bonne pratique pour ne pas rencontrer ce problème de caractères accentués ?

    Merci d'avance.


    Citation Envoyé par xc78370 Voir le message
    Bonjour,

    Merci à tous pour votre aide.

    J'ai résolu le problème en utilisant les fonctions encodeURI pour le passage de paramètres et decodeURI pour la récupération des paramètres.

  14. #14
    jnore
    Invité(e)
    Par défaut
    Bonjour,

    Ici pour moi ton problème n'est pas le même que le précédent.
    Alors que tu avais un problème d'encodage la fois précedente, il semblerait qu'ici certains de tes caractères soient codés en URL. Le / devient donc %2F.

    Il te faudrait trouver l'équivalent de 'url_decode' sous PHP, et l'appliquer à ta date avant insertion en BDD.

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

Discussions similaires

  1. encodage problème des caractères accentués
    Par thomyvp dans le forum Langage
    Réponses: 8
    Dernier message: 15/03/2015, 12h31
  2. [GWT] Encodage des caractères accentués
    Par nesbla dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 08/11/2007, 16h20
  3. [FLASH MX2004] Pb sur des caractères accentués.
    Par sandrineLL dans le forum Flash
    Réponses: 3
    Dernier message: 05/08/2004, 14h18
  4. Chaînes avec des caractères accentués dans Interbase
    Par François Marliac dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/03/2004, 22h39
  5. insérer des caractères accentués INFORMIX/JDBC
    Par donde dans le forum Informix
    Réponses: 2
    Dernier message: 19/11/2002, 20h02

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