Bonjour,
je récupère du texte en base que je veux afficher via php.
La table, l'interclassement, le header sont en utf-8.
Problème, l'encodage passe pas, les caractères spéciaux affichent un joker de là j'ai essayé de faire un utf8Encode, ça fait planter php.
Bon ensuite j'essaye de tout, iconv de iso vers utf-8 et inversement, utf-decode et encode, filtrage des caractères spéciaux rien n'y fait j'arrive jamais à avoir un texte complètement clean.

En regardant ce que me retourne mb_detect_encoding, je vois que certains enregistrements sont reconnus en UTF-8 et d'autres rien! Mieux en mettant les paramètres de mb_detect_encoding en strict, il ne reconnait aucun encodage sur aucun enregistrement. Bref j'en suis à un point où rien ne paraît logique et je ne sais plus par quel bout prendre ce texte pour qu'il soit propre.
Hello nekikool et bienvenue, Smiley smile

tu pourrais déjà essayer de spécifier juste après le mysql_select_db
mysql_query('SET NAMES UTF8');
Hey merci ! Mais ça ne fait que sauver les apparences, maintenant il me trouve bien l'encodage UTF-8 systématiquement mais pour l'affichage ça me donne les mêmes résultats... Peut-être que je devrais insister sur mysql et mettre :

SET character_set_server = utf-8;
SET character_set_database = utf-8;


En plus du NAMES, je vais tester(oui je réfléchis en même temps que je poste)...
Es-tu bien sûr d'être sûr (<- copyright windows vista) que les données de ta base sont toutes en utf-8 ?
Heyoan a écrit :
Es-tu bien sûr d'être sûr (<- copyright windows vista) que les données de ta base sont toutes en utf-8 ?

Oh que non, elles doivent l'être "faussement" et pas toutes de la même façon, le champs title me retourne des textes qui passent nickel après un encode, alors que le champs content, celui dont on parle, c'est euh, je trouve pas les mots. Mais les charset sont bien en utf-8 par contre.

Bon concrètement, là, après avoir récupéré le texte je fais un detect_encoding qui me retourne systématiquement UTF-8, un strip_tags, un utf8_decode et à l'affichage j'ai quelque chose de presque correct si je mets l'encodage de firefox en... iso Smiley biggol
C'est le mieux que j'arrive à avoir pour le moment.
nekikool a écrit :
Oh que non, elles doivent l'être "faussement" et pas toutes de la même façon, le champs title me retourne des textes qui passent nickel après un encode, alors que le champs content, celui dont on parle, c'est euh, je trouve pas les mots. Mais les charset sont bien en utf-8 par contre.

Bah si ta connexion mysql est en UTF-8, de même que les tables et champs, mais que les données sont pas en UTF-8, tu vas pas aller très loin. Il faut corriger les données. Ou bidouiller en PHP pour corriger tel ou tel paquet de données (si en plus tu as des données dans des encodages hétéroclites). Smiley lol
C'est ce que je fais, je bidouille à mort, là j'arrive à faire reconnaitre le texte en tant qu'UTF-8 après bidouillage et avoir des points d'interrogations(des vrais) à la place des "jokers", ça me détruit mes caractères accentués sans espoir de les récupérer mais je sens que j'y suis presque...
Heyoan a écrit :
... et en profiter pour rechercher le(s) formulaire(s) qui te pourrit(ssent) la base. Smiley cligne


Ah mais c'est plus compliqué, c'est une source externe, et la base est pas exempt de tout reproche, y'a un truc qui colle pas avec son utf8, j'ai déjà eu des problème avec une autre source externe dont j'ai importé une table... Mais on doit tout changer en 2009, faut juste que je tienne le coup jusque là avec des rustines.
nekikool a écrit :

Mais on doit tout changer en 2009, faut juste que je tienne le coup jusque là avec des rustines.
Arg ! Bon courage (en espérant que ce soit plutôt en janvier qu'en décembre Smiley biggol ).

Sinon on gagne parfois du temps à faire un dump de la base et des remplacements de caractères "à la main" plutôt qu'un script...