Version complète: sur le forum Webmaster Hub : Probleme d'encodage des données issues de MySQL
Webmaster Hub > Accueil > Le salon de Webmaster Hub
bastien03
Bonjour a tous,

Je suis en train de me faire mon site et comme je veux être conforme au standard j'ai décidé de tout faire en "utf-8". J'ai donc mes scripts en "utf-8" ainsi que ma base de donnée MySQL.

Problème quand j'essaye d'afficher ma table tous les lettres accentuées sont remplacées par un point d'interrogation dans un losange. Dans firefox, je change l'encodage des caractères pour voir, miracle en ISO-8859-1 les caractères accentué de la BDD sont bien affiché mais plus le reste de la page.

Je ne vois d'ou cela peut bien venir surtout que quand je fais afficher ma base dans PhpMyAdmin les lettres sont normales !!!

Si quelqu'un a une idée une piste, un début de solution je suis preneur.

Merci d'avance de votre aide.

Ma config : Debian testing Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 PHP/5.2.0-10+lenny1 MySQL: 5.0.38 phpMyAdmin - 2.10.1deb2
bastien03
Bon personnes n'a d'idée ???

En cherchant j'ai trouvé cette fonction tres pratique :

CODE
mysql_client_encoding


Elle retourne le nom du jeu de caractères utilisé par le client MySQL plus de détail a cette adresse :

Manuel MySQL : mysql_client_encoding

donc maintenant je sais que j'utilise du latin-1 soit de l'ISO-8859-1, le pourquoi ? je ne sais pas encore mais je trouverais,un jour ou l'autre rolleyes.gif

Maintenant j'aimerais savoir :

Comment on fait pour dire a MySQL qu'on veut de l'utf-8 ?
Peut on le préciser a la connections a la BDD ?

En attendant une aide, je vais potasser le code source de phpmyadmin après tout, il arrive bien a l'afficher correctement, donc la réponse doit y être.

Merci d'avance. smile.gif
Anonymus
Alors :
Tu veux utiliser de l'UTF8 ? Ok, mais :
L'iso est aussi 'conforme aux standards', il s'agit juste d'un autre standard smile.gif

Pour sortir des données en utf8 de la base de données, il aurait fallut que tu les entres en utf8.
Là, apparemment, tu les as entré en iso, et tu veux les sortir en utf8.

C'est ce que ne comprend pas ta page. Elle essaie d'afficher du utf8, alors que c'est de l'iso, et lorsqu'elle ne connait pas un caractère, elle affiche un '?' smile.gif

L'idéal serait de vider ta base, puis de la remplir avec de l'utf8. Alors tu pourrais en sortir ce que tu veux.

La seconde solution serait de faire une mise à jour (via un script qu'il te faut faire) de tes données déjà en base, vers de l'utf8, afin de n'avoir que cet encodage en base.
La 3e solution est des moins élégantes, à savoir :
Stocker de l'iso, et encoder à l'affichage (via la fonction utf8_encode par exemple), pour afficher de l'utf8 à partir d'iso.

Voilà,
Nicolas.
Dudu
Salut

Voici un article qui répond directement à ta question: PHP, MySQL & UTF-8 sont dans un bateau smile.gif
bastien03
Merci a vous pour vos réponse,

J'ai ajouté :
CODE
mysql_query("SET NAMES 'utf8'");

au script après la connection a la base de donnée et maintenant ça marche nickel

bien sur je pourrais également modifier la configuration de mysql mais je ne pourrrais pas le faire chez free donc l'ajout de cette petite ligne est bien plus pratique.

a_thumbsup_20.gif Super lien Dudu je le remet pour qu'il soit bien visible [edit modérateur]Pas trop quand même smile.gif[/Edit]

Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.