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 requêtes POST


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut Encodage des requêtes POST
    Bonjour à tous,

    J'envoie au serveur, via des requêtes "ajax", le contenu de divers inputs.
    La page HTML dans mon navigateur a parmi ses headers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv='content-type' content='text/html; charset=iso-8859-1' />
    L'un de mes champs contient du texte avec des accents.

    Quand je passe la requête en GET, ce qui arrive sur mon serveur est correctement formatté : on voit les caractères accentuées. Si je passe par POST, le résultat arrive en UTF-8, ce qui m'oblige à traiter les chaînes avec utf8_decode() pour retrouver mes caractères ISO-8859-1.

    Si je piste les échanges avec HTTP-Direct sous FF3, je vois que tous mes posts sont marqués en UTF-8, ce qui explique le problème.
    Malheureusement, je n'arrive pas à forcer le content-type. Même si j'envoie "application/x-www-form-urlencoded; charset=ISO-8858-1" dans le contentType de ma requête, ce qui part est en UTF-8.

    Y-a-t'il moyen de forcer le navigateur à déclarer le bon encodage pour la requête qu'il envoie ou suis-je forcé
    - soit d'éviter POST et de n'utiliser que GET, qui conserve bien l'encodage désiré,
    - soit de ré-encoder systématiquement la requête reçue côté serveur ?

  2. #2
    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
    Même si j'envoie "application/x-www-form-urlencoded; charset=ISO-8858-1" dans le contentType de ma requête, ce qui part est en UTF-8.
    Tu l'envoies comment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=iso-8859-1");
    ne fonctionne pas ?
    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

  3. #3
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    J'utilise jQuery :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      $.ajax({
        type : 'POST', url : 'ajax.php', dataType : 'xml',
        contentType : "application/x-www-form-urlencoded; charset=ISO-8859-1", 
    [etc...]
    qui se traduit plus tard, dans le code de jQuery, par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.setRequestHeader("Content-Type", s.contentType);

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 6
    Par défaut
    Bonjour,

    As-tu trouvé un contournement à ce problème ? J'ai le même problème, mis à part que le site en question est entièrement en ISO-8859...donc impossible à changer pour le moment - toute aide serait la précieuse.

    J'utilise YUI pour faire mes requêtes AJAX, mais impossible de changer le content type du header - FF3 l'écrase systématiquement.

  5. #5
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Non, rien de neuf de mon côté. J'ai fait quelques tests avec Opera et IE pour le même résultat : ce n'est donc pas spécifique à Firefox.

    Ni à JQuery, d'ailleurs.

    En attendant mieux, je recode les chaînes entrantes côté serveur avec utf8_decode() (PHP).

  6. #6
    Membre chevronné
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Par défaut
    Je fais remonter ce sujet car j'ai le même problème: impossible de faire un post en envoyant des données en ISO-8859-1.

    Sauf avec Firefox, qui "comprend" le contentType que je lui force. Chrome et IE se bornent à envoyer de l'UTF-8.

    C'est dingue, y'a tout de même des gens qui y arrivent, non?

Discussions similaires

  1. Comment débugger des requêtes POST ?
    Par Cdic83 dans le forum Eclipse
    Réponses: 1
    Dernier message: 09/03/2010, 22h34
  2. Problème d'encodage du point dans une requête POST
    Par ultraboa dans le forum ActionScript 3
    Réponses: 3
    Dernier message: 07/02/2009, 21h58
  3. Problème encodage des données POST lues
    Par cheprod dans le forum Apache
    Réponses: 2
    Dernier message: 12/11/2007, 09h59
  4. [Prototype] Prototype Window gestion des requêtes GET et POST
    Par frankeedia@mac.com dans le forum Bibliothèques & Frameworks
    Réponses: 2
    Dernier message: 20/06/2007, 17h32
  5. encodage des données lors du post en AJAX
    Par jibouze dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 19/04/2006, 21h26

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