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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    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 : 75
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    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 ?

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    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 Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    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 confirmé
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    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 : 75
    Localisation : Belgique

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

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    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.

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  7. #7
    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 : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    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
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    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 '+'

+ 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 Invité 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 Invité 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