Bonjour à toutes et à tous,

J'utilise un agrégateur(moissonneur de flux XML) qui parse des données et les placent dans une Base de données
MySQL. Les fichiers XML sont encodés en UTF-8 (aucun problème d'accent).
Les données sont encodées en UTF-8 dans l'interface graphique de l'agrégateur les accents sont correctement
orthographiés, mais dans la Base de données MySQL les accents ressemblent à ceci :

? La haute montagne semble à l'écart, préservée

Pourtant l'interclassement de la Base de données est en utf8_general_ci, ainsi que les tables stockant les
données.
Je ne comprends pas.

Merci d'avance.
Sophonie.
Sans doute une mauvaise gestion de la connexion MySQL dans l'application qui oublie d'indiquer qu'elle bosse en UTF-8 (SET NAMES...). Et donc les chaines souffrent du double encodage (problème classique)

+
(pour Remi)
Comment résoudre ce problème?
Corriger l'application ou rapporter le bug au projet.

+
11 jours plus tard
Je m'étais bien pris la tête avec ce problème 🙁
Immédiatement après la connection à la base de données, il faut dire à celle-ci que tu travailles en utf-8.
mysql_query('SET NAMES utf8');
Et pour ne plus l'oublier, je me suis fait une petite fonction :
function connexionBaseDeDonnees() {

  global $bd_hote;
  global $bd_utilisateur;
  global $bd_mdp;
  global $bd_nom;

  mysql_connect( $bd_hote, $bd_utilisateur, $bd_mdp ) or die("Erreur de connexion au serveur de base de données.");
  mysql_select_db( $bd_nom ) or die("Erreur de connexion à la base de données. $bd_nom");
  mysql_query('SET NAMES utf8');
}
Bonjour Dionysos,

Dans quel fichier du serveur MySQL faut-il placer ce script php permettant de résoudre les problèmes
d'encodages des caractères?

Merci d'avance.
Sophonie.
Il y a un mal entendu...
C'est de ma faute, j'aurai dû plus faire attention au premier message.

Ma réponse convenait parfaitement dans le cas où on accède à la base de donnée avec des scripts php. Or, ce n'est apparemment pas ton cas.
Il faut que tu fouilles dans les fichiers sources de ton agrégateur de flux pour voir à quel moment, et où, il se connecte à la base de données, de façon à envoyer à la base de données la requête "SET NAMES utf8" immédiatemment après la connexion.

Suis-je clair ?
Où as-tu récupéré cet agrégrateur ?
Bon, je viens de fouiller un peu les sources, désolé, je n'ai pas de solution toute faite.
je sais me débrouiller en php, mais pas en php objet.

Par contre, il me semble avoir compris qu'il était possible, à l'installation, de définir l'encodage de la base de données et que l'utf8 était pris en charge.

Si tu peux, fait une nouvelle installation et sois attentive aux paramètres proposés lors de celle-ci.
Si tu ne peux pas, il faut fouiller tous les fichiers de configuration ou autres pour voir où est susceptible d'être enregistrée l'information jeu de caractères de la base de données. Un moyen pour trouver ces fichiers, c'est de regarder leur date de modification qui correspondra grosso modo à la date d'installation ou plus récente, date à comparer avec la date des fichiers sources qui n'a pas eu de raison d'être modifiée, donc probablement le 19/02/2009 pour la plupart.
Source : http://dev.mysql.com/doc/refman/5.1/en/charset-configuration.html

Extrait
You can force client programs to use specific character set as follows:
[client]
default-character-set=charset_name
Donc à ajouter dans le my.cnf
[client]
default-character-set=UTF8
Le test
mysql> show variables like 'character_set_client';
+----------------------+-------+
| Variable_name        | Value |
+----------------------+-------+
| character_set_client | utf8  |
+----------------------+-------+
1 row in set (0.00 sec)
Par contre, cette configuration s'appliquant à tous les clients (applications), ça peut aussi bien mettre la pagaille.

La bonne solution, c'est donc bien de corriger l'application qui pose problème.

+
Bojour à toutes et à tous,

En modifiant le fichier de configuration my.cnf, en relançant le serveur MySQL et
en effectuant une aggrégation des métadonnées présentes dans un silo OAI,
les erreurs d'encodages ont disparus.
Merci encore.

Cependant, mais ceci uniquement pour un silo OAI, j'ai le message suivant
lorsque j'effectue un moissonnage(ou une aggrégation).
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='
Sophonie.