Encodage UTF-8

WRInaute passionné
Bonjour,
il y a peu j'ai changé d'hébergeur, mais manque de bol en passant de ma BDD sous MySQL 4.1 vers mon nouvel hébergeur les caractères des textes de ma base de données étaient totalement différent; la base de données de mon nouvel hébergeur étant en MySQL 4.0.

Bon je met les mains dans le comboui, change l'encodage de mes pages en UTF-8 et là déjà une bonne partie de mes pages revient à la normale, une grande parties des textes provenant de ma BDD s'affichent désormais normalement.

Les textes en "dur" sont par contre mal affiché pour tout ce qui est caractère, là c'est ma faute j'aurais du mettre des &eacute au lieu de é, je change ces textes et traque les textes sur le site.

Problème il me reste encore des pages où du texte provenant de ma base de données sont affiché étrangement.
exemple : http://www.metalorgie.com/punk/interviews.php?id=107
Et là je me perd dans les possibilités qu'offre les fonctions php. En utilisant utf8_encode ça résout des problèmes mais laisse des carctères étrange pour tout ce qui est "...", "'", """, ...
Exemple : http://www.metalorgie.com/metal/interviews.php?id=89
J'ai testé en utlisant html_entities, ... Mais je ne trouve pas de solution adéquat.
J'ai fait une fonction de ce style :
Code:
$accents = array("’", "'", "\"", "\"");
$code    = array("’", "‘", "“", "”"); 
return  str_replace($accents, $code, $chaine);
(on ne vois pas forcément bien, mais dans le second tableau ce sont les codes HTML des carctères)

Mais ça ne donne pas de très bon résultat, et surtout il suffit d'un caractère auquel je n'ai pas pensé pour que mon texte parte en live.

Quelqu'un aurait une solution?

merci :)
 
WRInaute occasionnel
salut!

est-ce que tu as essyé la fonction : mb_convert_encoding() ?

est-ce que tu fais gaffe au deuxième paramètre de le fonction html_entity_decode()?
c'est lui qui dit comment la fonction doit se comporter avec les quotes.
essaye avec la constante ENT_NOQUOTES. ça devrait résoudre ton problème je pense.
 
WRInaute passionné
Oui j'ai testé mais cela ne marchait pas du tout, car l'encodage par défaut est en ISO si mes souvenirs sont bons et je n'arrive pas à trouver le bon "nom" pour l'UTF-8
Je vais voir pour le mb_convert que je ne connais pas.
Merci.
 
WRInaute occasionnel
j'utilise bcp mb_convert_encoding(), et en générale ça marche très bien

mb_convert_encoding($str,"UTF-8","ISO-8859-1")

ou quand je suis pas sûr de l'encodage de la source :
mb_convert_encoding($str,"UTF-8")
 
WRInaute passionné
La fonction mb_convert marche bien, elle n'encode par contre pas tous les carctère spéciaux comme les 3 points, les quotes, ...

J'ai testé en utilisant html_entity_decode ou htmlentities, ... mais rien à faire ça merdouille.

J'ai donc fait une petite fonction qui remplace les carctère de ce genre les plus courant.

Merci pour votre aide.
 
Discussions similaires
Haut