Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
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 31/01/2012, 21h11   #1
Invité de passage
 
Inscription : mai 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 3
Points : 0
Points : 0
Par défaut Problème avec apostrophe et signe euro

Bonjour,

je suis en train de m'amuser à rentrer des infos récupéré d'un flux rss dans une base de données. Pour le moment tous fonctionne correctement et j'ai tout en utf-8 sauf le fichier XML d'où provient le flux qui lui est apparemment en iso-8859-1 (dû moins c'est version="1.0" encoding="ISO-8859-1").

Le soucis est que je récupère tout correctement niveau accentuation, c'est enregistré avec les accents correctement dans ma base de données aussi, mais dès qu'il y a un apostrophe ou le sigle euro, je récupère alors un petit carré avec des chiffres dedans (0092 pour l'apostrophe par exemple). J'ai beau utilisé utf8_decode/utf8_encode ca ne change rien, je récupère alors soit un losange noir avec ? � dedans soit Â' à la place de l'apostrophe, sans parler que dû coups les caractères qui était correctement accentué avant partent eux aussi en vrille.

Donc si quelqu'un a une petite idée du comment transformer ce carré 0092 en véritable apostrophe, je suis preneur

merci
galak6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 08h32   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 731
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 731
Points : 3 300
Points : 3 300
Salut

Ca un moment maintenant que je n'utilise plus de l'iso-8859-1 (essentiellement du utf-8), donc sauf erreur, l'iso-8859-1 contient très peu de caractères spéciaux (comme ô, ù, à, etc ...) et aussi le signe €.

Si le flux est l'iso-8859-1 et contient ce genre de caractères j'ai tendance à dire que c'est peine perdue.
C'est une erreur de la part de celui qui génère ce flux.

Ceci dit, pas forcément.
Il faudrait le lien vers ce flux contenant ces divers caractères là pour voir comment il est construit (la source).
Ca peu venir aussi dans la manière dont tu récupères le flux (en admettant qu'il soit bien codé).


D'ailleurs, si tu pointes directement sur ce flux via ton navigateur, est-ce que tu visualises bien ces caractères ?
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 10h43   #3
Invité de passage
 
Inscription : mai 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 3
Points : 0
Points : 0
Salut,

Pour ce qui est du flux, voilà son adresse :

http://feeds.feedburner.com/Revioo

Le soucis ce pose par exemple sur l'item <title> se nommant "Revioo : En route pour l’IT Partners"

Dans chrome ou firefox quand j'ouvre le flux directement, l'affichage se fait correctement.

Le truc vraiment bizarre c'est que je n'ai aucun soucis avec les accents, donc je suppose que je fait correctement la récupération de l'iso vers l'utf ?

Bon après ca me gène pas plus que ca, mais c'est quand même plus propre d'avoir un véritable apostrophe qu'un petit carré avec 0092 dedans

merci pour la réponse
galak6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 13h04   #4
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
tu peu regarder du coté de mb_encode_numericentity()

pour obtenir des caractères iso en html, puis les rentrer dans la bdd
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 14h17   #5
Invité de passage
 
Inscription : mai 2011
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2011
Messages : 3
Points : 0
Points : 0
Effectivement, ca fonctionne !

mais j'ai tâtonné un peu car je ne savais pas quoi mettre dans l'array $convmap

en faisant quelque recherche sur le net, j'ai trouvé ca :

Code :
1
2
$convmap = array(0x7F, 0xFFFFFF, 0x0, 0xFFFFFF);
$titre = mb_encode_numericentity($titre, $convmap, 'UTF-8');
(venant de spip)

et après un rapide essai, c'est concluant, j'ai bien mes petits carré 0092 qui disparaissent, par contre maintenant va falloir que je comprenne la signification des valeurs dans cet array

edit : oups, quel mal élevé je fais... j'ai oublié de dire un grand merci aux personnes ayant apporté une réponse
galak6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 15h11   #6
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
pour l'iso tu peu regarder la

http://fr.wikipedia.org/wiki/ISO_8859-1

et à priori ici

http://www.alanwood.net/demos/charsetdiffs.html
__________________
Conception / Dev
ascito 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 11h33.


 
 
 
 
Partenaires

Hébergement Web