Flux RSS et UTF-8
17 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Flux RSS et UTF-8
Bonjour,
je me prend la tête sur un problème et je suis sûr qu'ici, quelqu'un va pouvoir m'aider. Donc voila :
1- Voici le site dont je tire mon RSS :
- BDD en UTF-8
- PHP configuré en ISO-8859-1
2- J'affiche ce RSS (au format ISO-8859-1) sur 1 site en ISO-8859-1 et 1 en UTF-8
Sur le site encodé en ISO-8859-1, il n'y a aucun problème
Sur le site encodé en UTF-8, j'ai mes accents qui sautent (normal).
3- Je voudrais donc que mon RSS soit au format ouvert UTF-8 pour que je n'ais plus ces problèmes d'accents.
J'ai donc mis <?xml version="1.0" encoding="utf-8"?> dans l'entête de mon flux RSS et je l'ais encodé grâce à la fonction PHP utf8_encode() : http://fr3.php.net/manual/fr/function.utf8-encode.php
Et résultat, après vidage de tous les caches de magpierss, j'ai toujours le même problème : ça s'affiche bien sur les sites encodés en ISO-8859-1 et pas sur le site encodé en UTF-8.
Quelqu'un peut-il m'aider ?
je me prend la tête sur un problème et je suis sûr qu'ici, quelqu'un va pouvoir m'aider. Donc voila :
1- Voici le site dont je tire mon RSS :
- BDD en UTF-8
- PHP configuré en ISO-8859-1
2- J'affiche ce RSS (au format ISO-8859-1) sur 1 site en ISO-8859-1 et 1 en UTF-8
Sur le site encodé en ISO-8859-1, il n'y a aucun problème
Sur le site encodé en UTF-8, j'ai mes accents qui sautent (normal).
3- Je voudrais donc que mon RSS soit au format ouvert UTF-8 pour que je n'ais plus ces problèmes d'accents.
J'ai donc mis <?xml version="1.0" encoding="utf-8"?> dans l'entête de mon flux RSS et je l'ais encodé grâce à la fonction PHP utf8_encode() : http://fr3.php.net/manual/fr/function.utf8-encode.php
Et résultat, après vidage de tous les caches de magpierss, j'ai toujours le même problème : ça s'affiche bien sur les sites encodés en ISO-8859-1 et pas sur le site encodé en UTF-8.
Quelqu'un peut-il m'aider ?
D'après tous les tests que je viens de faire :
- mon flux RSS est bien encodé en UTF-8
- mon cache magpierss n'est pas en UTF-8 (c'est peut-être une piste)
N'y aurait-il pas une option de configuration dans magpierss pour le forcer à retourner les données dans le bon encodage ?
Donc pour résumer :
J'ai 1 flux en UTF-8 qui ne s'affiche pas correctement sur une page encodée en UTF-8. Bug de magpierss ? Pb de configuration du PHP (sur OVH, je crois bien que c'est de l'ISO) ? Je sais pô...
- mon flux RSS est bien encodé en UTF-8
- mon cache magpierss n'est pas en UTF-8 (c'est peut-être une piste)
N'y aurait-il pas une option de configuration dans magpierss pour le forcer à retourner les données dans le bon encodage ?
Donc pour résumer :
J'ai 1 flux en UTF-8 qui ne s'affiche pas correctement sur une page encodée en UTF-8. Bug de magpierss ? Pb de configuration du PHP (sur OVH, je crois bien que c'est de l'ISO) ? Je sais pô...
Je ne pourrais pas te dire si l'UTF-8 est plus ouvert mais en tout j'ai des problèmes ressemblant aux tiens. En utilisant l'encodage windows-1252 mes problèmes on disparus.
Sinon, comme tu l'a dit, regarder du côté de magpierss serais un bon début !
Sinon, comme tu l'a dit, regarder du côté de magpierss serais un bon début !
Bonjour blman,
Vla, je ne suis pas certain, mais d'après ce que j'en ai compris ici et sur le chat, il semblerait que le problème provient des jeux de caractères et collations de connexion.
Il faut donc en gros mettre, directement après la connexion au serveur mysql, ceci:
première requête : met les jeux de caractères et collations de connexion au charset souhaité (soit utf8 si base de données en utf8)
seconde requête : met le jeux character_set_results à NULL pour éviter des conversions au niveau du serveur mysql (lent)
Voila, en espérant que cela résoudra ton problème
edit: je ne l'ai pas précisé, mais plus besoin des fonctions utf8_encode() et utf8_decode()
Vla, je ne suis pas certain, mais d'après ce que j'en ai compris ici et sur le chat, il semblerait que le problème provient des jeux de caractères et collations de connexion.
Il faut donc en gros mettre, directement après la connexion au serveur mysql, ceci:
- Code: Tout sélectionner
@mysql_query("SET CHARACTER SET 'utf8'");
@mysql_query("SET character_set_results = NULL");
première requête : met les jeux de caractères et collations de connexion au charset souhaité (soit utf8 si base de données en utf8)
seconde requête : met le jeux character_set_results à NULL pour éviter des conversions au niveau du serveur mysql (lent)
Voila, en espérant que cela résoudra ton problème
edit: je ne l'ai pas précisé, mais plus besoin des fonctions utf8_encode() et utf8_decode()
Bon, bilan.
Déjà merci à ACth avec qui on a testé tout un tas de truc sur le chat pendant 2 bonnes heures.
Je n'ais toujours pas la réponse à ma question. J'ai pourtant essayer plein de chose, regarder du côté de la config de magpierss. Sur le chat, il y a visiblement plein de monde qui a le même problème et personne ne sait de quoi ça peut venir.
Je pense que ça vient de magpierss, je ne vois pas d'autre explication mais je suis toujours preneur.
Pour le moment, j'ai réglé mon problème en convertisant tous mes caractères en entités HTML avant même de générer le flux RSS
Déjà merci à ACth avec qui on a testé tout un tas de truc sur le chat pendant 2 bonnes heures.
Je n'ais toujours pas la réponse à ma question. J'ai pourtant essayer plein de chose, regarder du côté de la config de magpierss. Sur le chat, il y a visiblement plein de monde qui a le même problème et personne ne sait de quoi ça peut venir.
Je pense que ça vient de magpierss, je ne vois pas d'autre explication mais je suis toujours preneur.
Pour le moment, j'ai réglé mon problème en convertisant tous mes caractères en entités HTML avant même de générer le flux RSS
oxman a écrit:Tu as essayé :
header("Content-Type: text/html; charset=utf-8"); ?
oui
- on a essayé ça
- la solution décrite plus haut
- d'utiliser la fonction utf8_decode() un peu partout
- de configurer magpierss
- etc...
Rien à faire... Pourtant mon flux RSS est bien au format UTF8. Ce que je ne comprend pas, c'est pourquoi magpierss n'est pas capble de l'interpréter comme de l'UTF8.
Pour la petite histoire, j'avais fait une page PHP qui prennait des flux (iso et utf8) et qui retournait le tout en un flux mix UTF8.
Donc déjà c'est possible
Déjà ton flux doit être en UTF8. Donc tu convertis les sources ISO en UTF8 et pas les UTF8 en UTF8
Tu me donnes l'url de ce RSS au format UTF8 une fois finis.
Donc déjà c'est possible
Déjà ton flux doit être en UTF8. Donc tu convertis les sources ISO en UTF8 et pas les UTF8 en UTF8
Tu me donnes l'url de ce RSS au format UTF8 une fois finis.
Nombreux problèmes avec 2 encodages différents
J'ai eu un problème identique avec Ruby on rails.
Après enquète, la cause était la suivante:
- aucune conversion n'était faite depuis l'encodage de mon formulaire html vers la BDD (page en ISO, DB en ISO)
- une conversion était faite de la DB à la page (base en ISO, page en UTF)
Pour résoudre le PB, j'ai modifié mon formulaire afin qu'il enregistre de l'utf8 dans une base ISO (impossible de comprendre tous les caractères de la base, mais ça marche très bien)
L'idéal serait de convertir la DB en utf8 aussi, mais il faudrait convertir chaque ligne.
Sur d'autre projets, même type de pb: 2 conversion à l'enregistrement et 1 seule au retour.
Pour ton PB, n'y a-t-il pas un pb de conversion qui se ferait dans un sens et pas dans l'autre ?
Sinon, une solution universelle que j'ai mise en place une fois:
str_replace (
array( 'é', 'è', ...),
array('´', 'è', ...),
$string_entry);
Mis à part qu'en 5 langues j'avais 10 lignes de conversion de caractères accentués, cédilles et autres copyright, je n'ai plus jamais eu de pb.
PS: j'avais pas vu ton dernier message, je laisse quand même
Après enquète, la cause était la suivante:
- aucune conversion n'était faite depuis l'encodage de mon formulaire html vers la BDD (page en ISO, DB en ISO)
- une conversion était faite de la DB à la page (base en ISO, page en UTF)
Pour résoudre le PB, j'ai modifié mon formulaire afin qu'il enregistre de l'utf8 dans une base ISO (impossible de comprendre tous les caractères de la base, mais ça marche très bien)
L'idéal serait de convertir la DB en utf8 aussi, mais il faudrait convertir chaque ligne.
Sur d'autre projets, même type de pb: 2 conversion à l'enregistrement et 1 seule au retour.
Pour ton PB, n'y a-t-il pas un pb de conversion qui se ferait dans un sens et pas dans l'autre ?
Sinon, une solution universelle que j'ai mise en place une fois:
str_replace (
array( 'é', 'è', ...),
array('´', 'è', ...),
$string_entry);
Mis à part qu'en 5 langues j'avais 10 lignes de conversion de caractères accentués, cédilles et autres copyright, je n'ai plus jamais eu de pb.
PS: j'avais pas vu ton dernier message, je laisse quand même
17 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Utiliser Actifpub pour l'intégration d'un flux RSS externe sur son site
- Intégrer facilement un flux RSS externe
- Un (RSS) pour tous (les blogs officiels de Google)
- Intégrer un flux RSS sur son site
- Des RSS rémunérés ça existe !
- Référencement vidéo sur Exalead
- Google Webmasters Tools indique le nombre d'abonnés à vos flux RSS/Atom
- La calculatrice de Google
- Moteur de recherche de flux RSS / Atom
- Google rachète Feedburner
Consultez la description détaillée des produits ou services de Google suivants : Google Feed Fetcher, Google Reader, Google ReadAir
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités






le forum