Sous Modx0.9.6 en francais-utf8 j’utilise Ditto2.0.2 et tvTagCloud.
J’ai crée une Tv nomée lvvTags de type texte et je saisi le mot clé sibérie (avec un accent). Si le placeholder [+tagLinks+] que j’utilise dans le chunck pour afficher un item de liste restitue bien la liste des mots-clés associé au document, il n’en va pas de même pour le snippet tvTagCloud. Le nuage affiche sib?rie en lieu et place de sibérie.
Est ce que quelqu’un a déjà utilisé tvTagCloud en utf8 avec des mots clés accentués ? Avez-vous rencontré ce pb.
Autre question - Existe-t’il une version de tvTagCloud fonctionnant uniquement pour une seule page plutot que pour des documents parents ? Est ce que quelqu’un s’est déjà attaqué à cette modification ?
Merci d’avance
Salut coroico,
La première chose à laquelle j’ai pensé est un problème au niveau de l’encodage des fichiers qu’il faut uploader sur le serveur... mais voilà, il n’y a pas de fichier ! Tout passe par le snippet uniquement.
Du coup, je ne vois pas trop : est-ce que dans ta bdd, les caractères accentués sont bien rendus ?
Hello,
le problème semble venir de tmplvars.format.inc.php qui utilise des fonction 7bits comme strtolower, ucfirst... En fait il faudrait utiliser les fonction mbstring (mb_strlen) qui elles gèrent l’utf8 (encodage multi-octet) le problème est la compatibilité, mbstring est apparu depuis la version 4.0.6 mais nécessite que le module soit chargé, de plus certaines fonctions n’ont été implémentées que plus tard ( détection d’encodage : 5.1.2).
Passer à l’utf8 oui, mais quelle gageure !
Espérons que MODx 0.9.7 utilisera ces fonctions.
Mais dans ce cas comment fait le snippet Ditto 2.0.2 qui lui produit correctement la liste des mots clés (et liens associés) via le placeholder [+tagLinks+]. Dans les deux cas Ditto ou tvTagCloud, le snippet doit bien récupérer les valeurs associées à la TV et les afficher, non ?
Mes tests sont effectués en PHP5/Mysql5 sur une plateforme XP sous Wamp5
Oui bien sur mais je pense que ça dépend du traitement qui est effectué après la récupération du contenu.
Effectivement, après vérification, le problème vient de l’utilisation de la fonction strtolower utilisée dans le snippet tvTagCloud. L’utilisation de cette fonction "pète" l’encodage de la chaine de caractères.
j’avais tenu bon, et privilégié l’UTF-8, mais là je pense que vu les pbs rencontrés je vais repasser en latin-1. Dommage pour mes amis Russes et Chinois !!!
tu peux faire un test si la fonction existe et utiliser mb_strtolower() qui gère l’utf8
Effectivement le test strtolower(’Sibérie’,’UTF-8’) donne bien sibérie. Par contre il faut bien précisé l’encoding UTF-8, sinon on trouve sib?rie comme résultat. Probablement parceque l’encoding par défaut est latin-1
Merci Soda pour ces explications.
hormis $modx->config[’etomite_charset’] existe-t’il une autre façon de récupérer le charset du back-end ? de façon à éviter de graver en dur le charset à UTF-8.
Bonsoir,
Merci Soda pour le tip sur mb_strtolower... ça règle le souci sur les tags !
En revanche, j’avais aussi un souci sur mon tooltip avec les accents. Du coup, j’ai testé de remplacer htmlentities par htmlspecialchars dans $this_tooltip = htmlentities($this_tooltip); (li 230 du snippet v 2.1.1).
Est-ce que ça peut poser des problèmes ce changement de fonctionnement ? Risque de sécurité ou je ne sais quoi ... Je voudrai pas faire n’importe quoi ^^
Merci !