Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 12/07/2008, 16h21   #1
Invité de passage
 
Inscription : juillet 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 4
Points : 0
Points : 0
Par défaut Caractères spéciaux et accents sur serveur US

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
NoireTulipe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 16h25   #2
Modérateur
 
Inscription : juin 2008
Messages : 2 693
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 2 693
Points : 3 199
Points : 3 199
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
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 16h29   #3
Invité de passage
 
Inscription : juillet 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 4
Points : 0
Points : 0
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 ....
NoireTulipe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 17h08   #4
Modérateur
 
Inscription : juin 2008
Messages : 2 693
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 2 693
Points : 3 199
Points : 3 199
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
wiztricks est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 18h39   #5
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 18h41   #6
Invité de passage
 
Inscription : juillet 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 4
Points : 0
Points : 0
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
NoireTulipe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 20h47   #7
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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']);
Et :
Code :
 header('Content-type: text/html; charset=UTF-8');
Il ne te reste plusqu'à faire des essais avec différents navigateurs afin de vérifier quels encodages sont envoyés à ton site. Si ce sont tous les mêmes, alors la solution est simple : utiliser iconv
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 21h01   #8
Invité de passage
 
Inscription : juillet 2008
Messages : 4
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 4
Points : 0
Points : 0
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 ....
NoireTulipe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2008, 21h10   #9
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h29.


 
 
 
 
Partenaires

Hébergement Web