|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 4 ![]() |
Bonjour,
Je me replie vers vous après deux jours de prise de tête. Voici mon problème : Suite un accident technique sur le serveur où j'ai été hébergé, j'ai décidé de migrer vers un nouveau serveur basé aux USA. Depuis ce jour j'ai un "petit" souci qui me hante. Les chaines de caractère contenues dans les variables PHP s'affiche en me remplaçant les caractères spéciaux ou avec accent en me les remplaçants par des trucs étranges. Par exemple : Pour "Je suis hébété par ce problème" J'obtiens : "Je suis hñÃñÕ par ce problïÎe" Pour information, et c'est bien là que je ne comprends plus rien, l'ensemble de mon site s'affiche convenablement. Pas de problème avec les accents ou autre. Seule les variables PHP me pose se probmème ! Quand, je récupère une variable $_POST, c'est le même problème. Le plus étrange est encore ceci : Quand j'ai fait un test sur l'encodage d'une variable $_POST j'ai obtenu cette aberration : $detect = mb_detect_encoding($_POST['truc']); $detect me retourne, avec surprise : EUC-JP (????????) J'ai essayé plus de truc comme : header('Content-type: text/html; charset=UTF-8'); Mais ça ne change pas trop mon problème .... Pourriez-vous m'aider là dessus ... Je n'y comprend plus rien. Merci |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : juin 2008 Messages : 2 693 ![]() |
Sur le serveur, le "locale" doit être US alors que le contenu retourné par les $_POST serait plutôt FR.
Il faut peut être récupérer le "locale" de l'utilisateur pour positionner celui du côté serveur. - W |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 4 ![]() |
Comment puis-je changer cela ?
D'autre part, cela ne me semble pas pourquoi une simple variable $truc="hébété" ne s'affiche pas correctement ..... Peut-être que je me trompe (et cela ne m'étonnerait pas plus que ça) mais ça fait deux jours que j'écume tous les forums sur la question .... |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : juin 2008 Messages : 2 693 ![]() |
Sur une session de test, il faudrait forcer le langage à FR_fr pour s'assurer que:
1 - le langage est installé, 2 - cela résoud votre problème. => dans le script PHP: (setlocale (LC_ALL, 'fr_FR') ou setlocale (LC_ALL, fr_FR) _ suivant la version. Si le diagnostic est bon... tout dépendra des autres applications: est ce qu'on peut positionner globalement le locale sans foutre le bazar à côté ou est-ce qu'il va falloir être plus sélectif et savoir la granularité à atteindre... Et voir comment cela peut être fait en fonction du serveur WEB et de l'application. - W |
|
|
00
|
|
|
#5 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Salut
As-tu vérifié l'encodage système de tes scripts PHP sur le nouveau serveur ? Est-il différent de l'ancien serveur ?
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 4 ![]() |
Oui il est différent.
Je tenais à apporter une précision. Le contenu des variables s'affiche correctement je n'ai donc pas de problème avec le problème est donc bien avec le POST de mes formulaires. Je viens d'effectuer un test avec la fonction SETLOCAL... Pas de changement. Je viens de vérifier l'encodage de mes fichiers, ils sont en ANSI. Je n'ai jamais eu de problème avec ce format ... Je vais faire un test en convertissant un script en UTF-8 ... Je vous tiens au courant... Désolé pour ce spawn de post mais bon, je galère ... Je viens de convertir mon script en UTF-8 et déception ce n'est toujours pas ça le problème .... Pour information : Les variable $_GET posent le même problème |
|
|
00
|
|
|
#7 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Désolé, je t'avais mal lu.
Tu n'es pas très loin de la solution. Tu as déjà vu qu'il y avait un manque de cohésion entre : Code :
$detect = mb_detect_encoding($_POST['truc']); Code :
header('Content-type: text/html; charset=UTF-8');
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : juillet 2008 Messages : 4 ![]() |
J'ai déjà utilisé iconv ...
$iconv = iconv("EUC-JP","UTF-8",$_POST['accent']); ça fonctionne .... il me retourne bien une variable correcte. Mais, là, ça implique que : Je dois me revoir l'ensemble de mes scripts, reformater toutes mes tables sql en UTF-8 et ré-encoder toutes mes pages php en UTF-8... Cette perspective m'en tombe les bras. J'ose espérer qu'il existe une solution pour force le serveur à me retourner des variables en iso ou en UTF-8 .... que je utf8_decoderai ...... Sinon, .......... rahhh, je n'ose même pas y penser ... Quel idée il m'en a prit d'acheter un serveur aux USA .... |
|
|
00
|
|
|
#9 |
![]() ![]() Guillaume RossoliniDirecteur technique Inscription : février 2004 Messages : 13 720 ![]() |
Je ne crois pas que cela ait quoi que ce soit à voir avec la localisation géographique du serveur, mais plutôt de sa configuration.
Vérifie les différences entre les deux php.ini, entre les deux httpd.conf...
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework) Ressources PHP - Ressources Zend Framework |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com