Bonjour la communauté,
Nous sommes actuellement confrontés à des problèmes d'accents dans la messagerie instantanée. Les messages sont tronqués à partir de la première lettre accentuée, sur un de nos 2 serveurs.
La principale différence entre ces 2 serveurs est la version de Mysql qui est la 4.1.12 (alors que la 4.1.16 est recommandée) sur le serveur où tout fonctionne correctement. Elle est 4.1.20 sur le serveur posant les problèmes d'accents.
Pour information, notre version actuelle de Moodle est la 1.6.2.
Si vous avez déjà rencontré le même problème, nous vous serions reconnaissant de bien vouloir nous informer de la solution apportée.
Cordialement, et vous remerciant par avance
Laurent
Pour compléter le message de Laurent, je tiens à signaler que les copies envoyées par courriel de ces messages comportent, elles, tous les caractères.
Pour préciser les choses :
Pour préciser les choses :
- lorsque l'envoi est validé par l'expéditeur, le message affiché est correct
- le message reçu par le destinataire est tronqué dès la première lettre accentuée
- si l'expéditeur regarde son historique, son message est également tronqué dès la première lettre accentuée
- la copie reçue par courriel par le destinataire est correcte
Bon, manifestement, personne n'avait rencontré ce soucis (tant mieux pour vous )...
Après quelques recherches, j'ai trouvé une solution
Il suffit, dans le fichier de configuration d'apache (httpd.conf) de mettre en commentaire la ligne suivante :
AddDefaultCharset ISO-8859-1
Quelques détails (et une autre possibilité de correction) dans la discussion suivante (en anglais) :
http://moodle.org/mod/forum/discuss.php?d=49874
Espérant pouvoir faire gagner du temps à d'autres personnes qui rencontreraient le même soucis...
Après quelques recherches, j'ai trouvé une solution
Il suffit, dans le fichier de configuration d'apache (httpd.conf) de mettre en commentaire la ligne suivante :
AddDefaultCharset ISO-8859-1
Quelques détails (et une autre possibilité de correction) dans la discussion suivante (en anglais) :
http://moodle.org/mod/forum/discuss.php?d=49874
Espérant pouvoir faire gagner du temps à d'autres personnes qui rencontreraient le même soucis...
Bonjour et merci Séverin pour la solution
On n'avait pas encore cherché la raison du problème parce qu'on a pas le temps en ce moment et que ce n'était pas
une fonction prioritaire.
Mais tes infos nous seront bien utiles
A+Marie
J'ai le même problème également en version 1.6.1 et sur une Mysql 5.0.
J'ai observé dans la 1.6.1 un certain nombre d'oublis régulier de la fonction de transcodage lors d'accès à des ressources texte. Ces fonctions, issues de la librairie mbstring.php, permettent en principe de transcoder automatiquement toutes les anciennes fonctions d'accès à des fichiers (et plus généralement à des flux) en les remplaçant. C'est une technique un peu inhabituelle de surcharge, mais ça à l'air de marcher. Sauf que pour être vraiment sûr du résultat, une lecture d'un texte dont on ne sait pas trop bien ce qu'il contient peut être automatiquement transcodé dans le code de fonctionnement interne de moodle par un appel explicite à la fonction mb_convert_encoding($str, "<encodage source>", "<encodage cible>"). si l'un des encodages est "auto", php essaie de détecter lui-même l'encodage le plus probable. C'est facile pour lui, car il lui suffit d'un seul caractère accentué pour regarder la séquence d'échappement utilisée.
$str = mb_convert_encoding($str, "auto", "UTF-8");
permettra donc à coup sûr d'obtenir de l'UTF-8 en sortie, en espérant que vous avez bien installé Moodle en UTF-8.
J'ai donc repéré dans pas mal de sources que ce transcodage n'est pas appelé, ce qui, en le faisant m'a permis de résoudre quelques problèmes déjà dans les popups.
Je vais me mettre en quête et vous livrer une réponse "dans moodle" dès que possible pour les version 1.6.
J'ai observé dans la 1.6.1 un certain nombre d'oublis régulier de la fonction de transcodage lors d'accès à des ressources texte. Ces fonctions, issues de la librairie mbstring.php, permettent en principe de transcoder automatiquement toutes les anciennes fonctions d'accès à des fichiers (et plus généralement à des flux) en les remplaçant. C'est une technique un peu inhabituelle de surcharge, mais ça à l'air de marcher. Sauf que pour être vraiment sûr du résultat, une lecture d'un texte dont on ne sait pas trop bien ce qu'il contient peut être automatiquement transcodé dans le code de fonctionnement interne de moodle par un appel explicite à la fonction mb_convert_encoding($str, "<encodage source>", "<encodage cible>"). si l'un des encodages est "auto", php essaie de détecter lui-même l'encodage le plus probable. C'est facile pour lui, car il lui suffit d'un seul caractère accentué pour regarder la séquence d'échappement utilisée.
$str = mb_convert_encoding($str, "auto", "UTF-8");
permettra donc à coup sûr d'obtenir de l'UTF-8 en sortie, en espérant que vous avez bien installé Moodle en UTF-8.
J'ai donc repéré dans pas mal de sources que ce transcodage n'est pas appelé, ce qui, en le faisant m'a permis de résoudre quelques problèmes déjà dans les popups.
Je vais me mettre en quête et vous livrer une réponse "dans moodle" dès que possible pour les version 1.6.
Bonjour,
une question bête : est-ce que la dernière version 1.6.4+ n'apporterait pas un progrès sur ce point là, par rapport à la 1.6.1 ?
une question bête : est-ce que la dernière version 1.6.4+ n'apporterait pas un progrès sur ce point là, par rapport à la 1.6.1 ?
J'ai localisé le problème dans le cache de texte. Un dépot de message produit 2 insertions successives dans la table mdl_cache_text. La deuxième est erronée.
Je vais essayer quand même de trouver le bug, avant de migrer vers 1.6.4+
Je vais essayer quand même de trouver le bug, avant de migrer vers 1.6.4+
Pas de doute, faut migrer en 1.6.4. au minimum, le bug est vraiment pas évident à dénicher, et les développeurs centraux l'ont déjà trouvé.
Mais conservez une version antérieure avant la migration. J'en ai eu besoin pour remettre tous les textes qui avaient été tronqués pendant la migration (je sais pas pourquoi).