Je met en place un site avec une partie blog pour laquelle j'utilise Wordpress.
En page d'accueil du site, j'affiche les titres des 5 dernières actus du blog.

Les apostrophes, tirets et deux points son remplacés par de ?

wordpress produit du utf-8 et le reste de mon site est plutôt en iso-8859-1.
J'ai essayé de changer le codage de la page incriminée en utf-8, bizarrement c'est pire : aucun des caractères accentué ne passe.
Bien qu'étant une bille en php, J'ai essayer d'encoder puis de décoder avec html_entity_decode, utf8_decode et que sais-je encore.

J'ai essayer de modifier le fichier .htaccess sans succès.
NB : j'ai vérifier le fichier rss, il semble tout ce qu'il y a de plus utf-8

Je n'ai plus d'idée, de l'aide serais bien venue.
polycrates a écrit :
wordpress produit du utf-8 et le reste de mon site est plutôt en iso-8859-1

De l'ISO-8859-1, en 2011? Pourquoi pas de l'ASCII tant qu'on y est? Smiley cligne

Plus sérieusement, cette page d'accueil est générée par WordPress? Ou bien c'est un script PHP perso qui interroge la base WP? Si c'est un script perso:
- quel est le codage des données dans la base (codage réel, pas métadonnées)?
- quel est le codage indiqué pour les données de la base (interclassement des tables et champs)?
- quel est le codage que tu veux récupérer pour ta page d'accueil?
- est-ce que tu fais un SET NAMES 'utf8' ou SET NAMES 'latin1' qui correspond au codage que tu souhaites obtenir (MySQL fera un transcodage si nécessaire)?
Le blog est dans un dossier /news, j'appel le fichier rss généré par wordpress en utilisant magpierss et feedparser.


1 + 2/ Je vois indiqué "utf8_general_ci" partout dans ma console d'administration et notamment pour "post_title" qui doit être ce que je récupère et affiche.
3 / pour le moment je veux afficher du iso-8859-1 car je n'ai pas le temps de reprendre tout mes fichiers en utf-8 surtout que j'utilise une (trop) vieille version de dreamweaver pour dégrossir (j'espère en avoir une qui me permettra de passer en utf-8 bientôt).
4 / je n'ai envoyé aucune commande. Il n'y a que WP qui utilise une base et je n'y ai pas touché. Je te rappel que la partie blog de mon site est entièrement en utf-8.
Devrai-je envoyer une commande qui modifie le codage d'un fichier ?


Pour le reste comme c'est la première fois que j'utilise une base MySQL je suis pas très a l'aise avec ces outils.
Pour info je suis sur online.
Modifié par polycrates (05 Apr 2011 - 19:03)
polycrates a écrit :
Devrai-je envoyer une commande qui modifie le codage d'un fichier ?

Non vu que tu ne te connectes pas à la base de données, mais récupère un fichier RSS en UTF-8.
Si tu veux afficher le texte récupéré en ISO-8859-1, il faudra sans doute utiliser la fonction PHP utf8_decode.
Par contre, attention: tout caractère non compatible avec UTF-8 ne sera pas converti (ou remplacé par des points d'interrogation ou omis dans le résultat final, je ne sais pas exactement). Si tu as des caractères pas compatibles avec ISO-8859-1 dans ton texte, il faudra peut-être utiliser la fonction PHP htmlentities.
j'avais déjà essayer de bidouiller feedparser comme tu le suggère. mais j'ai recommencé en étant systématique. voilà ce que j'ai essayé :
mon code de départ est le suivant :

foreach ($items as $item)
{
$html .= "<li>";
$html .= "<a href=\"".$item['link']."\">".$item['title']."</a>";
$html .= "</li>\n";
}
$html .= "</ul>\n";
}

j'ai commencé par utiliser

utf8_decode

puis j'ai rajouté

htmlentities (mais aussi htmlspecialchars)

je tiens à dire que j'avais précédemment essayer de mettre le fichier en utf-8 comme c'était pire j'ai essayé un petit
utf8_encode
dans feedparser. j'ai essayé de combiner les commandes dans tous les sens, rien n'y fait.

en retournant vers mon fichier rss en xml, je me rend compte d'une chose :

dans le résumé des articles, l'apostrophe est codée
&#8217;
mais dans les titres l'apostrophe est simplement ' ...
ce pourrait-il que le problème vienne de là ?
La gestion des codages, transcodages et autres traitements en PHP avec utf8_decode, htmlentities, et des classes telles que feedParser (plusieurs scripts portent ce nom on dirait) et Magpie RSS (qui est aussi un parseur de RSS donc doublon de fonctionnalité?), pour être franc, ça me dépasse. Je ne peux rien en dire à part l'habituel RTFM. Smiley smile

Avant même d'utiliser utf8_decode ou htmlentities sur les données que te retourne ton parseur RSS, il faudrait vérifier:
- Quelles sont les données au juste dans le fichier RSS (quels caractères, quel codage).
- Ce que le parseur retourne au juste (données telles quelles, transcodées, corrompues?).
Bref, comprendre comment ça fonctionne plutôt que bidouiller des correctifs au petit bonheur la chance. Smiley cligne