PHP : Problème d’encodage au niveau du passage des variables

nicopulse

Membre actif
11 Mai 2008
106
9
Bonjour à tous,

Je travaille actuellement sur un projet web iPhone (HTML/PHP/SQL/JS/AJAX avec FrameWork WebApp) avec une base Oracle et Apache :p le tout hébergé sous Windows Server 2003. :sick:

Après avoir résolu les erreurs d’encodage des fichiers à l’enregistrement :love:
⇨ encoder en ISO 8859-1 et pas en UTF-8
Utiliser la fonction entête au début des pages php :
⇨ header('Content-Type: text/xml; charset=ISO-8859-1');

Je me heurte maintenant à des problèmes d’encodage au niveau du passage des variables d’un formulaire à une page de traitement (requête POST en AJAX). Je viens de passer une journée entière à essayer de le résoudre en vain. :eek:

Exemples :
( é ) coté formulaire devient ( é ) sur la page de traitement :mouais::mouais::mouais::mouais:
( ‘ ) coté formulaire devient ( \‘ ) coté traitement

Je m’en suis aperçu car lors du traitement j’utilise :
⇨ htmlentities()
⇨ htmlspecialchar()
Ces deux fonctions ne font absolument rien sur les variables que je voudrais traiter. :(

En effectuant des tests (echo), je me suis aperçu que les variables qui contienne des caractères spéciaux sont directement mal encodé dans le $_POST !

Voici le problème sur un test simple (méthode GET) :

xi24912166148.png


J’en déduis que c’est un problème au niveau du passage des variables !

Et je ne sais pas comment résoudre ce problème. Mais je pense qu’il faut forcer le navigateur (ici Safari) à passer des variables en ISO-8859-1 et non pas en UTF-8 comme il à l’air de le faire.
Et il faut le forcer à deux endroits :
⇨ Passer les requêtes POST en ISO-8859-1 au niveau d'une requête AJAX.
⇨ Passer les requêtes POST en ISO-8859-1 au niveau du problème simple illustré ci-dessus.

Voilà donc si quelqu'un à une idée ou à l'expérience de ce genre d'aventure ! Je suis preneur d'explications ! :up:

Merci d'avance ! :zen::zen::zen::zen:
 
Bonjour,

ça dépend comment tu gères tes requêtes AJAX; mais les librairies les plus connues (jQuery, Mootools) permettent de spécifier l'encodage à utiliser pour les requêtes AJAX.

Sinon, il te reste l'utilisation de la fonction utf8_decode.
 
Ajoute ça dans le head :
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Il me semble que l'en-tête de la requête prévaut pour l'affichage, mais que la balise meta prévaut pour l'envoi des formulaires&#8230; Après effectivement, les lib ajax peuvent avoir leurs particularités et comme le dit Ouark, c'est bien de l'utf-8 que tu reçois, donc tu peux le décoder.