Aller au contenu

Sujets conseillés

Posté

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-8
AddCharset UTF-8 .html
AddCharset 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 ?

Posté

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...

Posté (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é par Kioob
Posté

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 ?

Posté (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é par Kioob

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...