Page 1 sur 1

Problème d'accent

Posté : 06 déc. 2007, 16:50
par Tito
Bonjour à tous,

Etant donné ma toute petite, mais alors, vraiment toute petit culture en PHP, je viens vous demander votre aide.

Je réalise en ce moment un petit site dans lequel j'ai essayé d'intégrer un système de news. J'y suis enfin arrivé après deux nuits de dur labeur.

Maintenant, j'ai un autre problème, qui est celui des accents. Quand je poste une news, les accentuations ne sont pas correctes; drôles de sigles etc.

Quelqu'un peut il me venir en aide?

Merci d'avance.

Posté : 06 déc. 2007, 17:20
par Ryle
Probablement un soucis d'encodage, tes chaines doivent être en utf8 et tu tentes de les afficher en iso (ou le contraire). Tu peux modifier le charset de tes page en jouant sur les métas, ou bien décoder tes données utf8 en iso à l'aide de la fonction utf8_decode() :)

Posté : 06 déc. 2007, 17:26
par Tito
Alors, comme je l'ai dit plus haut, j'ai une très petite connaissance en PHP, donc ce que tu viens de m'expliquer est un peu complexe pour moi.Je débute réellement en programmation.

Posté : 06 déc. 2007, 17:39
par Ryle
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 :)

Posté : 06 déc. 2007, 17:59
par Tito
Un grand merci pour ta réponse. Je viens donc de mettre cette ligne dans le code de la page, et ça fonctionne, mais uniquement si je mets utf-8 dans mon navigateur (Firefox), mais comment savoir si toutes les personnes qui viendront se ballader sur mon site n'auront-elles pas le même problèmes d'affichages que moi ?

Edit : Ok, j'ai trouvé, encore un grand merci pour tes éclaircissements.