captain_torche Posté 14 Juin 2008 Posté 14 Juin 2008 Bonjour, Je suis en train de développer un site en UTF-8, histoire de m'éviter de nombreux soucis par la suite. Cependant, il me reste quelques soucis avec les données issues de la base. Ce que je constate dans PHPMyAdmin : Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) Interclassement pour la connexion MySQL: utf8_general_ci (valeur que je n'arrive pas à modifier). Première question : quelle est la différence entre ces deux valeurs ? Seconde question : Mes pages sont toutes enregistrées au format UTF-8 sans BOM, ce qui me semble être correct. Les données accentués que j'inclus directement dans le code source, sont rendus correctement. J'ai également ajouté ceci dans mon .htaccess : AddDefaultCharset UTF-8AddCharset UTF-8 .htmlAddCharset UTF-8 .php Si j'en crois ma configuration Apache, mod_mime est activé Le problème vient des caractères accentués issus de la base de données, qui se présentent de la manière suivante : "caractère accentu�" (au cas où ça ne passerait pas ici, le "é" est remplacé par un losange noir contenant un point d'interrogation). Si je veux que ces données soient affichées correctement, il faut auparavant que je fasse un utf8_decode() (ce qui est censé les passer en ISO, non ?) Où est-ce que ma configuration pècherait, et que dois-je faire pour y remédier ?
Gecko64 Posté 14 Juin 2008 Posté 14 Juin 2008 Je dis ca ainsi au cas ou mais moi récemment j'ai eu un souci plus ou moins similaire ou en fait dans la construction de la structure de ma table, je devais mettre charset UTF8. Ca avait résolu mon problème... Je ne sais pas si ca peut t'aider... Sinon pour le reste, je ne vais pas dire que je connais ca en détail mais a première vue, rien me semble anormal...
Kioob Posté 14 Juin 2008 Posté 14 Juin 2008 (modifié) Hello, pour du full utf8 il faut généralement : - sur toutes les pages un header('Content-type: text/html; charset=UTF-8') ; à moins qu'il soit configuré comme charset par défaut via ton .htacces, mais à vérifier grace à "live headers" ou le developper bar pour voir les entêtes. - en entête de toutes les pages, un meta "content-type" ou tag XML indiquant qu'il s'agit d'UTF8 - coté MySQL généralement il faut indiquer à MySQL que la connexion est en UTF-8 (et ce n'est pas lié à phpmyadmin)... là encore, à mois qu'elle soit configurée de la sorte "par défaut" Ensuite il se peut que le navigateur bascule en mode "iso-8859-1" si le premier "accent" du fichier est en iso-8859-1. J'ai eu le soucis récemment avec un IE6 : un seul caractère de la page était mal encodé, ce qui faisait foirer tout le reste. Sinon personnellement je n'ai jamais réussi à faire enregistrer correctement des valeurs UTF-8 à phpMyAdmin. Toutes les autres interfaces d'accès à MySQL fonctionnent parfaitement, mais phpMyAdmin semble souvent mélanger tout ça (mais peut être que dans mon cas il s'agit d'un soucis de configuration de phpMyAdmin, je ne me suis jamais vraiment penché dessus). Tout ça pour dire que si tes données ont été saisie via phpMyAdmin, elles ne sont peut-être pas encodées comme il faut en base. Modifié 14 Juin 2008 par Kioob
captain_torche Posté 14 Juin 2008 Auteur Posté 14 Juin 2008 Je viens de voir que j'avais un souci lors de l'enregistrement des données (pas dans PHPMyAdmin, mais depuis mes pages). J'ai corrigé ce problème (merci Kioob de m'avoir mis sur la voie), mais il me reste un dernier souci : les caractères sont affichés correctement tant qu'ils sont affichés normalement, mais dès qu'ils sont affichés dans un champ input, je les retrouve sous la forme "Test avec des caractÚres accentués.". Que faire pour y remédier ?
Kioob Posté 14 Juin 2008 Posté 14 Juin 2008 (modifié) mm "chez moi ça marche" :S Mis à part quelques soucis avec les données importées depuis Ajax je n'ai pas ce genre de problèmes. Aurais tu une URL d'exemple ? Edit : une solution serait d'utiliser htmlentities (en précisant qu'il s'agit d'UTF-8). Même s'il là de "contourner" le problème. Modifié 14 Juin 2008 par Kioob
captain_torche Posté 14 Juin 2008 Auteur Posté 14 Juin 2008 J'essaye de te faire un accès, je t'enverrai un MP pour tester.
captain_torche Posté 15 Juin 2008 Auteur Posté 15 Juin 2008 Kioob m'a bien aidé; il s'agissait d'un htmlentities qui traînait là où il ne fallait pas. Merci encore à toi !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant