Flux RSS et UTF-8

WRInaute accro
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 ?
 
WRInaute accro
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ô...
 
WRInaute accro
Bé, j'aimerais bien conserver l'UTF-8 car c'est logiquement un format ouvert avec plus d'intéropérabilité (décidément, ce mot est très dur à écrire).
 
WRInaute discret
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 !
 
WRInaute impliqué
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:

Code:
@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()
 
WRInaute accro
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
 
WRInaute accro
oxman a dit:
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.
 
WRInaute discret
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.
 
WRInaute accro
Bon bé merci oxman, ça fonctionne. Je fais un petit bilan demain, je test encore 2 ou 3 trucs pour bien finir et puis hop !
 
Nouveau WRInaute
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('&acute;', '&egrave;', ...),
$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 ;)
 
Discussions similaires
Haut