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 des messages "Alert"


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2005
    Messages : 70
    Par défaut Encodage des messages "Alert"
    J'ai une petite fonction PHP destiné à sortir mon appli web des situations d'erreur en balançant un message à l'usager.

    Ce PHP appelle une courte page HTML dédiée aux bugs, en lui passant le message d'erreur en paramètre d'URL, genre :

    header ('Location:./callEchec.html?mess='.$messErreur);

    La page html "callEchec.html" comporte un "onLoad" qui lit l'extension, récupère le "mess" et déclenche le message Alert.

    Problème : ça marche impec sur tous les navigateurs, sur PC et sur Mac, sauf évidemment sur IE. Sur IE, les accents éventuels s'affichent dans la bouillie mal décodée de l'UTF-8...

    En PHP, j'ai placé un "var_dump (iconv_get_encoding('all'))" juste avant envoi. Dans toutes les configurations (y compris IE) j'obtiens : "ISO-8859-1" en Input, Output, et internal (normal, le serveur est le même !).

    maintenant, si je tente de faire une conversion : "$messErreur = iconv("UTF-8", "ISO-8859-1//TRANSLIT", $messErreur)" juste avant envoi, ça....... marche impec sur IE (accents bien affichés) mais ça plante toutes les autres config (écran blanc).

    .......Je vais mourir ! HELP !
    Et merci.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    si tu as suivi toutes les recommandations de Passez à l'UTF-8 sans manquer une étape, tu peux regarder du coté des caractères UNICODE
    é : \u00e9
    à : \u00e0

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2005
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2005
    Messages : 70
    Par défaut Problème résolu... strange...
    ... apparemment, rien à voir avec les encodages des jeux de caractères manipulés par le serveur, mais tout à voir avec la transmission des paramètres d'URL. j'ai en effet résolu le problème en modifiant ma commande PHP qui appelle la page HTML d'Alert :

    J'ai fait :
    header ('Location:./callExit.html?mess='.rawurlencode($messErreur));
    Au lieu de :
    header ('Location:./callExit.html?mess='.$messErreur)

    ...ce qui encode la partie "message" dans le respect de la RFC 3986.

    Mais du coup, la question devient : pourquoi ça marchait avec toutes les plate-formes (FFox, Safari, Chrome, Opera...) sur Mac et PC...... SAUF sous IE ???

  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
    Mais du coup, la question devient : pourquoi ça marchait avec toutes les plate-formes (FFox, Safari, Chrome, Opera...) sur Mac et PC...... SAUF sous IE ???
    C'est une vraie question ?
    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 expérimenté

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Par défaut
    Spacefrog, je pense que tu n'avais pas compris son problème.
    En effet, le mister ici n'avait pas de soucis d'encodage, puisque sont JS récupérait la chaine qui se trouvait dans l'url.
    Et comme il le dit ensuite, c'est juste un problème lié à l'encodage de l'url quand on récupère l'url via document.location.href.

    Je pense que IE interprétait différemment l'url, il reste juste à faire des tests pour connaitre la différence aux niveaux des URL et aussi, il faudrait un exemple de ce que donne rawurlencode.

  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
    arnoques je pense que tu n'as pas compris ma plaisanterie ...

    Demander pourquoi ça plante sous IE ...
    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
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par puresprit Voir le message
    ... apparemment, rien à voir avec les encodages des jeux de caractères manipulés par le serveur, mais tout à voir avec la transmission des paramètres d'URL. j'ai en effet résolu le problème en modifiant ma commande PHP qui appelle la page HTML d'Alert :

    J'ai fait :
    header ('Location:./callExit.html?mess='.rawurlencode($messErreur));
    Au lieu de :
    header ('Location:./callExit.html?mess='.$messErreur)

    ...ce qui encode la partie "message" dans le respect de la RFC 3986.

    Mais du coup, la question devient : pourquoi ça marchait avec toutes les plate-formes (FFox, Safari, Chrome, Opera...) sur Mac et PC...... SAUF sous IE ???
    ce que dit la RFC c'est que TOUTE l'url doit être encodée je ferais donc
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    header (rawurlencode('Location:./callExit.html?mess='.$messErreur))

    A+JYT

Discussions similaires

  1. aficher des message d'alerte
    Par krikete13 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 28/05/2007, 23h05

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