Modérateur PHPfrance |
10684 Messages
06 déc. 2007, 17:39
Oki, alors on va commencer par le début
Lorsque tu écris un texte, celui-ci utilise un jeu de caractères spécifiques (un charset) qui encode chaque caractère d'une certaine manière. Ce peut être de l'unicode (UTF8) du latin (iso-8859-1) du latin avec prise en charge de l'euro (iso-8859-15), ou même un charset contenant les caractères japonnais ou arabe etc.
Chacun encodant ses caractères de manière différente, si tu tentes d'en lire un avec un autre, et bien il s'emmelle les pédales et retourne des choses étranges
Ce qui t'arrive (du moins je le suppose) c'est que dans ta base de données, les données sont encodées en unicode, tandis que ta page va les afficher par défaut comme si c'était de l'iso (et donc va mal décoder les accents et autre, les "é" deviennent par exemple des "é"

)
Tu as dès lors deux possibilités. La plus simple est dans la page qui va afficher les données, dire que celles-ci sont en utf8, et c'est le navigateur qui fera la conversion. Pour cela, il te suffit d'ajouter entre les balises <head></head> de ton document le méta suivant pour spécifier le charset à utiliser pour lire la page :
Code : Tout sélectionner
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
L'autre solution, un peu plus fastidieuse, consiste à décoder chaque donnée que tu récupères de ta base avec la fonction utf8_decode(), ce qui aura pour effet de les transformer en iso, et ainsi le navigateur pourra les afficher correctement

Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...