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 01/02/2011, 11h43   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Par défaut XML et PHP : encodage du sigle "€"

Bonjour !

J'ai un problème avec le sigle euro lors de l'import de fichiers XML de partenaires via PHP.

Voici un bout du code

Code :
1
2
3
4
5
$url = "URL DU FLUX RECUPERE";
$xml = simplexml_load_file($url);
foreach ($xml->store->products->product as $product) { 
$titre= utf8_decode($product->$title);
}
J'insère ensuite dans ma base MySQL la valeur de $titre

Le souci c'est que lorsque ce titre contient le sigle "€", ce qui arrive très souvent dans mon cas, il est remplacé par une apostrophe dans ma base.

Comment faire pour que le sigle euro s'insère bien comme le sigle euro et non pas comme une apostrophe ?

Merci de votre aide !
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 11h50   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
ton xml a la base est en utf-8 ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 13h27   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Bonjour et merci pour ton aide

La plupart de mes fournisseurs de flux XML me fournissent effectivement en flux UTF8, mais pas tous.

Ceux qui posent problème avec le sigle euro semblent être encodés en UTF-8

Merci
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 13h29   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
Citation:
Envoyé par chuckichucki Voir le message
Bonjour et merci pour ton aide

La plupart de mes fournisseurs de flux XML me fournissent effectivement en flux UTF8, mais pas tous.

Ceux qui posent problème avec le sigle euro semblent être encodés en UTF-8

Merci
simpleXML travaille uniquement en utf-8, donc c'est faux de mettre utf8_decode derrière
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 03/02/2011, 19h58   #5
Rédacteur/Modérateur
 
Avatar de Thes32
 
Homme
Développeur Web
Inscription : décembre 2006
Messages : 2 335
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2006
Messages : 2 335
Points : 3 774
Points : 3 774
Citation:
Envoyé par stealth35 Voir le message
simpleXML travaille uniquement en utf-8, donc c'est faux de mettre utf8_decode derrière
+1
__________________
Développeur | Zend Certified Engineer

Étapes Pour mieux se servir du forum:
1. Commencez par lire les cours et tutoriels ;
2. Faites une recherche;
3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

Nix>_Rien n'est plus pratique que la théorie
Thes32 est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 08/02/2011, 11h43   #6
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Merci beaucoup pour votre aide

Le souci c'est que si j'enleve le utf8_decode, ca commence vraiment à partir en sucette avec plein de caractères bizarroides.

Si je laisse utf8_decode ca deconne beaucoup moins.... juste quelques caractères ont des soucis et particulièrement le sigle euro.

Je ne sais pas vraiment à quel moment ca déconne, sachant que je travaille dans la configuration suivante
- table mysql est en "collation" : utf8_general_ci
- affichage du site se fait avec le charset charset=iso-8859-1

Peut-être faut-il que je utf8_decode à la reception des données lors de l'afffichage du contenu sur ma page ?

Merci par avance de votre aide
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 11h51   #7
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Exemple

Quand j'enlève utf8_decode : le contenu inséré ressemble à
"3h de cours à 49 € au lieu de 199 € !"

alors que je devrais avoir "3h de cours à 49 euros au lieu de 199 euros"

Quand je remets urf8_decode, j'obtiens "3h de cours à 49 ? au lieu de 199 ? !"

On voit que tout fonctionne dans le 2e cas, sauf le sigle euro....

Help....
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 11h55   #8
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par chuckichucki Voir le message
On voit que tout fonctionne dans le 2e cas, sauf le sigle euro....
C'est normal, le caractère € n'existe pas en ISO-8859-1 (suite à la conversion UTF-8 => ISO-8859-1 par utf8_decode) (présent en ISO-8859-15 ou CP1252)

Il faut choisir un jeu adapté (garder UTF-8 notamment) voir utiliser une translitération (iconv('UTF-8', 'ISO-8859-1//TRANSLIT', '€')) voir son entité HTML (à éviter).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 12h52   #9
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
OK merci pour ces éclaircissements

Mais pourquoi les caractères deviennent bizarroides (sur tous les caractères accentués par exemple) quand j'insère les données en base MySQL sans utf8_decode ? Pourtant ma base est en "collation utf-8" et mes données aussi ?
Je suis bien en UTF-8 tout du long....

J'ai tenté de passer la table en latin1_swedish_ci en laissant utf8_decode mais ca ne fonctionne pas, j'ai toujours un souci avec mes euros.

Y-a-t-il une correspondance entre la collation de la page et la collation qui me permettrait de bien afficher mon sigle euro ?
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 13h02   #10
Candidat au titre de Membre du Club
 
Inscription : mai 2010
Messages : 43
Détails du profil
Informations forums :
Inscription : mai 2010
Messages : 43
Points : 10
Points : 10
Sur ce forum, à la fin, la seule solution trouvée est de remplacer avant insertion en base le caractère euro par €

http://bugs.mysql.com/bug.php?id=18321

Ca me semble un peu foireux tout de même.... non ?
chuckichucki est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2011, 13h45   #11
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Citation:
Envoyé par chuckichucki Voir le message
Je suis bien en UTF-8 tout du long....
On voit très bien que ce n'est pas le cas.

Au niveau de MySQL, il faut regarder les jeux utilisés aux différents niveaux (à commencer par celui de la connexion - mysql_set_charset/set names).

Côté PHP, ne pas faire de traitement avec des fonctions inappropriées et indiquer le jeu au client.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/02/2011, 19h15   #12
Invité de passage
 
Inscription : février 2011
Messages : 7
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 7
Points : 0
Points : 0
bonjour, j'ai le même problème les euros ne s'affiche pas et je voudrais savoir si vous aviez trouvé une solution et si oui laquelle.
stp
trek9505 est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h04.


 
 
 
 
Partenaires

Hébergement Web