Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/06/2007, 14h12   #1
Invité régulier
 
Inscription : décembre 2004
Messages : 18
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 18
Points : 8
Points : 8
Par défaut Problème d'encodage sur différents serveurs

Bonjour,

J'ai un petit soucis d'encodage. Pour faire bref, j'effectu une requête AJAX (via la librairie prototype.js) en POST sur une page php. La réponse est renvoyé sous la forme :

Code :
1
2
 
echo Zend_Json::encode(utf8_encode("message"));
(J'encode en utf8 ici car par défaut, ma librairie javascript pour ajax dialogue en utf8.)

Un simple alert() javascript affiche le résultat de ma requête.
Je test en local, tout fonctionne nickel. Je test sur le serveur et là commence le problème des caractères accentués.

Le système de fichier de mon serveur est en utf_8 donc enlever utf8_encode() de l'envoi de ma réponse solutionne le problème sur mon serveur de prod mais le reporte sur mon serveur de dev.

Ma question est : Est-il possible en php de détecter ce genre de comportement ? J'ai essayé la commande iconv_get_encoding() sur les 2 serveurs et me renvoient les même paramètres (iso-8859-1). Apache est configuré sur les 2 serveurs pour utiliser iso-8859-1 en encodage par défaut.

Quelqu'un aurait une idée ?

++

Jedi
JEDI_BC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 15h09   #2
Rédacteur/Modérateur
 
Avatar de Deepin
 
Homme Deepin
Ingénieur - Chef de projet Modélisation/Simulation
Inscription : avril 2004
Messages : 1 341
Détails du profil
Informations personnelles :
Nom : Homme Deepin
Localisation : Ile Maurice

Informations professionnelles :
Activité : Ingénieur - Chef de projet Modélisation/Simulation
Secteur : Industrie

Informations forums :
Inscription : avril 2004
Messages : 1 341
Points : 7 056
Points : 7 056
Envoyer un message via Skype™ à Deepin
Salut,
C'est toujours trop chiant ces problemes d encodage.
As tu regardé mb_detect_encoding()?
Regarde sur php.net, ya un gar qui propose une fonction isUTF8():
http://us.php.net/manual/en/function...t-encoding.php
En esperant que ça taide.
++ et bon courage
Deepin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 15h26   #3
Invité régulier
 
Inscription : décembre 2004
Messages : 18
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 18
Points : 8
Points : 8
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
    function isUTF8($str) {
        if ($str === mb_convert_encoding(mb_convert_encoding($str, "UTF-32", "UTF-8"), "UTF-8", "UTF-32")) {
            return true;
        } else {
            return false;
        }
    }
 
	if (isUTF8("é"))
	{
		echo "UTF8";
	} else {
		echo "non UTF8";
	}
?>
Me renvoi non UTF8 sur les 2 serveurs
JEDI_BC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 15h47   #4
Invité régulier
 
Inscription : décembre 2004
Messages : 18
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 18
Points : 8
Points : 8
Je viens de trouver une solution "satisfaisante" à mon problème :

Code :
echo Zend_Json::encode(htmlentities("message"));
et coté javascript, la librairie prototype.js me permet de faire :

Code :
alert(response.unescapeHTML());
Ce qui fonctionne sur les 2 serveurs différents
JEDI_BC est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h46.


 
 
 
 
Partenaires

Hébergement Web