Bonjour les gens,


Avant de poster, j'ai un peu cherché sur le forum, mais je n'ai rien trouvé qui répondait à mon problème, même s'il y a des cas similaires. Donc voilà...

Alors, il y a peu, j'ai passé ma base de données en UTF-8, directement via mySQL en modifiant mes tables et champs, et en les mettant en utf8-unicode-ci. Etonnement, mes pages encodées en ISO-8859-1 accepte très bien les données issus de mes tables, et je n'ai pas de problème d'accent. J'ai donc simplement supposer que mon idée initiale, à savoir que le changement via phpMyAdmin permettait de changer l'encodage était la bonne.

Du coup, j'ai tout passé en UTF-8. Via iconv, j'ai encodé toutes mes pages php/html en UTF-8, et via Zend Studio; quand je choisis l'encodage UTF-8, ça marche nickel. Donc content.

Au passage, j'ai changé le meta de mes pages d'ISO-8859-1 en UTF-8 pour être tranquille.

Mais là, soucis : autant les accents écrits directement dans les templates html passent bien, autant ce qui est issu de la base ne s'affiche carrément pas bien.
Si je remets ISO-8859-1 à la place d'UTF-8, les accents des templates ne passent plus, mais ceux de la base passent très bien. Du coup, je ne vois pas quoi faire. J'ai ajouté un mb_detect_encoding à la fin de mes pages, et ça me dit que c'est en UTF-8, quel que soit l'encodage dans le meta.

Cela pourrait-il venir de la méthode utilisée pour changer l'encodage de ma base ? Sinon, quelqu'un aurait-il une idée pour corriger ça simplement ?


Merci,
Stan.
Salut, je ne peux pas répondre à la totalité de ta question, mais point de détail important, le choix de l'encodage dans PHPmyadmin ne fait aucun changement dans les bases, il n'affecte que l'affichage des données dans PHPmyadmin.

Si tu veux passer ta base en utf-8, il faut voir du coté du mot clé CHARSET dans ALTER TABLE sous mysql 5.0.
coccimaster a écrit :
Salut, je ne peux pas répondre à la totalité de ta question, mais point de détail important, le choix de l'encodage dans PHPmyadmin ne fait aucun changement dans les bases, il n'affecte que l'affichage des données dans PHPmyadmin.

Si tu veux passer ta base en utf-8, il faut voir du coté du mot clé CHARSET dans ALTER TABLE sous mysql 5.0.


Je parlais bien évidemment de changer l'encodage via la modification de la structure, soit :
ALTER TABLE `table` CHANGE `champ` `champ` TEXT CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL
par exemple... Smiley smile
Bon, je crois que j'ai trouvé ici :
http://forum.alsacreations.com/topic-17-1201-2-Iso88591-iso885915-utf8-lequel-choisir-.html#p80669

Quand je rajoute :
mysql_query("SET NAMES 'utf-8'");

et que je mets UTF-8 dans le meta, c'est tout bon, ça marche bien.
Je suis quand même surpris que la requête ne renvoie pas "automatiquement" dans le bon encodage, ce qui semble être le problème, ou que la conversion ne soit pas faite automatiquement... ou tout simplement que ça ne fonctionne pas tout bêtement en utilisant que de l'UTF-8 partout...

bref.