Page 1 sur 1

Mes lettres accentuées apparaissent comme des carrés dans me

Posté : 16 févr. 2009, 12:31
par jay64
Bonjour à tous

J'ai stocké dans ma base de données des valeurs contenant des lettres accentuées.
Dans une page, j'affiche ces données dans des listes déroulantes à l'aide du bout de code suivant :
<option value="<?php echo $row_JoueursEquipe1['NomJoueurL1']?>"><?php echo $row_JoueursEquipe1['NomJoueurL1'].' '.$row_JoueursEquipe1['PrenomJoueurL1'].' '.$row_JoueursEquipe1['PosteJoueurL1']?></option>
Pour les éléments contenant des lettres accentuées, celles-ci n'appraissent pas normalement et sont remplacées par des carré.

Avez-vous une idée ?

Merci


-----édition 12h01-----------
je progresse, j'ai rajouté htmlentities($row_JoueursEquipe1['NomJoueurL1']) et là mes listes déroulantes s'affichent correctement ..... sauf que .....

... quand je sélectionne un élément et qu'avec une requete insert into je l'ajoute dans une autre table de la BDD, les caractères sont modifiés. Exemple : le "é" est remplacé par "é"

Help ...

merci !

Posté : 16 févr. 2009, 14:00
par zigz4g
C'est plus un probleme d'encodage des caracteres. Il faut que tu stocke, envoie et recupere tes strings dans le meme encodage. Si ta bdd est en iso-latin1, il est preferable d'avoir aussi tes donnees dans cet encodage.

Posté : 16 févr. 2009, 15:19
par jay64
ma BDD est au format suivant : UTF-8 Unicode (utf8)

C'est dans mon insert into que ça déconne puisque l'enregistrement dans la bdd se fait avec des caractères spéciaux non voulus

Posté : 16 févr. 2009, 22:03
par Sethpolma
Les fameux problèmes d'encodage ! Je te souhaite bien du courage si tu reprends un ancien site. Car, j'ai vu de tout et n'importe quoi dans les différentes bases de données. :)

Un peu de théorie : l'encodage est la manière de représenter un caractère en informatique. L'ISO, l'un des encodages les plus répandus (mais pas celui que je conseille) est codé, imaginons, sur 4 bits (valeur que je donne arbitrairement : peut-être est-elle juste, peut-être pas). Problème, ta base stocke tous les caractères en UTF-8, ce qui signifie que chaque caractère est codé sur 8 bits. Cela peut être intéressant pour permettre d'afficher tous les caractères du monde (aussi bien l'alphabet chinois que l'alphabet cyrillique). Cependant, cela pose de gros soucis pour nous, français, qui utilisons des accents.

Ta base de données stocke de l'UTF-8 (attends donc des caractères codés sur 8 bits), et tu lui envoies de l'ISO probablement (codé sur 4 bits). Tu as donc des soucis d'affichage.

Pour résoudre tout cela, essaye d'exécuter la requête :

Code : Tout sélectionner

SET NAMES UTF8
Avant tout envoi d'une autre requête. Cela indiquera à MySQL de traiter les données que tu lui envoies comme de l'UTF-8. Essaye comme cela, et tiens nous au courant du résultat. :)