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.
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 ???