bastien03 Posté 4 Juin 2007 Posté 4 Juin 2007 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 Posté 4 Juin 2007 Auteur Posté 4 Juin 2007 Bon personnes n'a d'idée ??? En cherchant j'ai trouvé cette fonction tres pratique : 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 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.
Anonymus Posté 4 Juin 2007 Posté 4 Juin 2007 Alors : Tu veux utiliser de l'UTF8 ? Ok, mais : L'iso est aussi 'conforme aux standards', il s'agit juste d'un autre standard 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 '?' 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 Posté 5 Juin 2007 Posté 5 Juin 2007 Salut Voici un article qui répond directement à ta question: PHP, MySQL & UTF-8 sont dans un bateau
bastien03 Posté 5 Juin 2007 Auteur Posté 5 Juin 2007 Merci a vous pour vos réponse, J'ai ajouté : 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. Super lien Dudu je le remet pour qu'il soit bien visible [edit modérateur]Pas trop quand même [/Edit] PHP, MySQL & UTF-8 sont dans un bateau
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant