boujour

les caractères spéciaux s'affichent bien sur ma page sauf
quand ils viennent de la bdd
pourtant :

- mes pages on en entête :
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

- mes pages, dans wamp sont enregistée en format utf-8
- dans ma bdd mes interclasement sont en : utf8_general_ci

ou est le pb
merci beaucoup!
Modifié par artichaudd (28 Apr 2010 - 13:05)
Bonjour.
Le fait d'imposer un encodage en UTF-8 dans ta page n'a rien à voir avec l'encodage des données par MySQL, puisque MySQL renvoie des données, en l'occurrence, encodées en latin-1, que PHP essaie ensuite d'afficher en UTF-8. Place cette ligne avant chaque mysql_query() te retournant quelque chose à afficher :
mysql_query("SET NAMES 'utf8'");


--- édit -----
J'adore ton avatar. Smiley lol
Modifié par phpdoesnotcare (28 Apr 2010 - 13:08)
parfait ! ca marche, merci
et merci pour l'avatar Smiley cligne , le tiens n'est pas mal non plus et surtout plus tarvaillé !
sinon j'ai vu ailleur que je pouvais mettre ca également

mysql_query("SET CHARACTER SET 'utf8'");
mysql_query("SET collation_connection = 'utf8_general_ci'");


que signifie cette deuxieme ligne, si t'as une idée?

pourquoi la bdd renvoie des info en latin alors que j'ai ms en interclassement uft 8, ce n'est pas la meme chose?
je cherche a comprendre! Smiley bawling
Modifié par artichaudd (28 Apr 2010 - 13:32)
Je te laisse jeter un oeil à cet article qui parle des collations. Ca te l'expliquera sans doute mieux que moi, mais pour faire simple, c'est pour la comparaison de caractères).

Ca n'a donc finalement rien à voir avec l'encodage des caractères qui est la manière dont chaque caractères est codé sur un bit (et peut-être même plusieurs pour certains caractères, mais je ne suis pas du tout expert dans ce domaine). Smiley cligne

--- édit -----
Merci pour l'avatar. C'est le fruit 20 minutes passées sous Photoshop (avec pas mal d'heures derrière). Smiley lol

Je me rends compte que j'ai dû répondre à ta question qu'à moitié.
Pour reprendre la différence entre les deux méthodes :
- celle que je t'ai donnée force la conversion en UTF-8 des caractères venant de MySQL.
Par exemple si tu écris dans ta BDD via phpMyAdmin, tu risques d'avoir ce problème d'encodage en affichant ça dans une page PHP, à moins d'utiliser ma fameuse ligne de code.
- celle que tu m'as montré semble être plus propre, puisqu'elle évite d'avoir à faire cette conversion à chaque lecture dans la BDD.
Modifié par phpdoesnotcare (28 Apr 2010 - 14:09)