Liens contextuels :
| Auteur | |
|---|---|
| arthak | # 25 Apr 2008 - 01:18:46 |
| 6 Posts |
Bonjour les petits lous, Venant d'installer un petit serveur apache avec php (Apache/2.2.8 (Win32) PHP/5.2.5), je rencontre actuellement un problème d'encodage concernant seulement les pages d'un blog dotclear : http://labo.arthak.com/marco/index.php?2008/04/24/1-first-post J'ai ajouté la petite ligne magique : AddDefaultCharset utf-8 à mon fichier de configuration apache. Et tout mes fichier ont étés sauvegardés en utf-8, ce qui à pour résultat qu'aucune de mes pages n'a de problèmes d'encodage, à par ce module. Je me tourne vers vous car j'ai épongé tout les forum et documentations Dotclear Lui même renvoi une en tête en :
et comprend astucieusement :
Les bases de données SQL contenant ces posts contienent cependant dans la colonne interclassement la mention : latin1_swedish_ci Les caractère accentués ne sont pas pris en compte autrement que par des ?, ce qui d'après un diagnostique alsa represente un conflit entre utf-8 et iso... Quelqu'un à-t-il une idée ? |
| zzzazzz | # 25 Apr 2008 - 12:30:11 |
| 452 Posts |
Bonjour, Oui il peut s'agir d'un problème d'encodage de la base de données elle même. J'ai eu un souci similaire récemment que j'ai résolu en plaçant cette petite ligne de code juste après la connexion à la base.
|
| arthak | # 25 Apr 2008 - 12:48:12 |
| 6 Posts |
Non apparemment après avoir appliqué ton :
Je me retrouve avec des encodages encore plus bizarre: «±«± Et une impossibilité de poster des commentaires :
Pour le mot : "été". Modifié par arthak (25 Apr 2008 - 12:49) |
| Florent V. | # 25 Apr 2008 - 13:10:23 |
On va manger des chips. Modérateur 11976 Posts |
Bonjour, 1. Version de MySQL? 2. Paramètres par défaut de MySQL pour l'encodage (ça peut se voir avec phpMyAdmin par exemple, et il doit y avoir sept ou huit lignes...)? 3. Interclassement (collation) indiqué pour les différentes tables? 4. Que donne un script PHP simple qui interroge la base de données pour en récupérer le contenu, avec un "SET NAMES utf8", un "SET NAMES latin1", et sans aucune de ces deux requêtes? |
| arthak | # 25 Apr 2008 - 13:52:40 |
| 6 Posts |
# Version du client MySQL: 5.0.45 Jeu de caractères pour MySQL: UTF-8 Unicode (utf8) Interclassement pour la connexion MySQL: utf8_unicode_ci
renvoi "� " ("?" sous windows) avec mysql_query("SET NAMES 'utf8'");renvoi "é" mysql_query("SET NAMES latin1");renvoi "� " ("?" sous windows) Je n'ai pas retrouvé les Paramètres par défaut de MySQL pour l'encodage sous PhpMyAdmin. J'ai cependant quelques variables serveurs: character set client utf8 (Valeur globale) latin1 character set connection utf8 (Valeur globale) latin1 character set results utf8 (Valeur globale) latin1 collation connection utf8_unicode_ci (Valeur globale) latin1_swedish_ci collation database latin1_swedish_ci collation server latin1_swedish_ci Qu'est ce que ca veux dire docteur ? Modifié par arthak (25 Apr 2008 - 14:02) |
| Florent V. | # 25 Apr 2008 - 16:25:56 |
On va manger des chips. Modérateur 11976 Posts |
arthak a écrit : La page étant interprétée par le navigateur avec quel encodage? arthak a écrit : Même question. Et question idiote: Dotclear est bien configuré pour utiliser UTF-8? Pour qu'une application utilisant une base en UTF-8 marche bien, il faut: - des données enregistrée en UTF-8; - des données marquées comme UTF-8 (si tes tables ont pour interclassement "latin1", ça n'est pas le cas); - une connection avec le serveur MySQL en UTF-8 (c'est à ça que sert le "SET NAMES utf8", nécessaire ici car le serveur MySQL est configuré pour une connexion par défaut en ISO-8859-1); - une application qui envoie des données (billet ou commentaire saisi, par exemple) en UTF-8; - une application qui n'utilise pas les fonctions PHP qui «corrompent» ou convertissent l'encodage (exemple: htmlspecialchars() sans indication de l'encodage UTF-8 en paramètre). Éventuellement, ça peut marcher avec des données en UTF-8 dans des tables en latin1 et avec une connection en latin1: comme les tables sont indiquées en latin1, MySQL ne fait pas de conversion et l'application peut y stocker des données UTF-8 et les récupérer telles-quelles. Je ne sais pas si Dotclear 1 fonctionne ainsi par défaut... Quoi qu'il en soit, je suis un peu étonné par ce qui s'affiche sur le blog car les caractères qui posent problème n'ont pas l'air d'être en latin1 ou windows1252 ou MacRoman, alors qu'ils ne sont pas en UTF-8. Les données ont l'air d'être corrompues à un stade ou un autre, mais là je ne vois pas où... |
| arthak | # 26 Apr 2008 - 11:29:03 |
| 6 Posts |
Mon naviguateur firefox 3b0.5 encodé en UTF-8 sous léopard. La page est encodé en UTF-8 et le script sauvegardé en UTF-8 (sans BOM) pour les 3 tests. Dotclear est effectivement configuré pour utiliser UTF-8 ^^. Cependant, lors de l'exécution d'un script de brainstorming qui illustre très bien le problème ( http://labo.arthak.com/brainstorm/code.txt , à exécuter http://labo.arthak.com/brainstorm/ ), je remarque le même problème. La page et bien enregistrée en UTF-8 mais en revanche sans header ni balise appréciant l'encodage. et ajouter mysql_query("SET NAMES utf8"); n'arrange rien car provoque une erreur de même type que la précédente :
le f67 étant le code repère de la requète provoquant l'erreur en l'occurrence la requête d'insert du mot. Le problème vient donc sans aucun doute de MySQL et sans doute donc de moi qui ai du changer des données de configuration car le problème n'était pas effectif auparavant. Mais de la à savoir quoi modifier... EDit : En reprenant le mot posté avant de le stocké, je m'aperçoit qu'il est mal encodé avant d'être stocké. C'est donc l'encodage des données lors de leurs "envoi" d'une page à une autre. Donc on revient à apache ou php... peut être une solution de ce coté la http://fr.php.net/manual/fr/mbstring.http.php en effet le problème est présent depuis que j'ai activé mbstring dans la config php. SOLUTION Modifier ces valeur dans le PHP.INI, ce qui revient à désactiver la conversion HTTP :
Je n'avai pas fait le lien.. Modifié par arthak (26 Apr 2008 - 12:33) |
Les références web : openweb.eu.org - opquast.com - webmaster-hub.com - webrankinfo.com - salemioche.net - web-pour-tous.org - webonorme.org
Nos partenaires : Editions Eyrolles - Location vacances France - Location vacances Europe
Nikozen : Hébergement - Réalisation : Alsacreations.fr



