SPIP-Listes : caractères parasites (Was : Affichage des caractères utf-8)

Bonjour,
Je me permets de relancer ce message : ma SPIP-Liste est actuellement *inutilisable* car des caractères bizarres s'affichent (à la place de lettres accentuées) alors que je suis bien en utf-8, et en SPIP 2.0.10... Auparavant j'envoyais une lettre tous les 15 jours sans problème.

Keskisspassdokteur ?

Ca devient urgent...

Merci d'avance !

--
Philippe G.

Hum,

Faute de réponses plus constructives, je peux vous proposer un test :
Si vous êtes en version "1_9_3" ou proche, éditez le fichier "inc/spiplistes_api.php" et au niveau de la fonction
"function spiplistes_assembler_patron ($path_patron, $contexte)" , faites les modification suivantes :

$result_html =
                $patron_html
                //? recuperer_fond($patron_html, $contexte)
                ? recuperer_page(generer_url_public('patron_switch')."&".spiplistes_http_build_query($contexte,"","&"),true)
                : ""
                ;
à passer en :

$result_html =
                $patron_html
                 ? recuperer_fond($patron_html, $contexte)
                //? recuperer_page(generer_url_public('patron_switch')."&".spiplistes_http_build_query($contexte,"","&"),true)
                : ""
                ;

Idem pour le texte :

                ($patron_texte && ($patron_html != $patron_texte))
                //? recuperer_fond($patron_texte, $contexte) . "\n"
                ? recuperer_page(generer_url_public('patron_switch')."&".spiplistes_http_build_query($contexte,"","&"),true)
                : spiplistes_courrier_version_texte($message_html) . "\n"
                ;
à passer en :

                ($patron_texte && ($patron_html != $patron_texte))
                 ? recuperer_fond($patron_texte, $contexte) . "\n"
                //? recuperer_page(generer_url_public('patron_switch')."&".spiplistes_http_build_query($contexte,"","&"),true)
                : spiplistes_courrier_version_texte($message_html) . "\n"
                ;
Pour ma part, ca corrige la donne ( les squelettes sont assemblés correctement ). Maintenant, pourquoi l'auteur a décidé d'employer recuperer_page au lieu de recuperer_fond, ça c'est pour moi un grand mystère. Je peux supposer que c'est pour des raisons de compatibilité avec les spip 1.9 mais sans aucune certitude...

Merci de me tenir au jus de vos tests :wink: ( en précisant vos versions spip et spip listes SVP si c'est pas trop en demander :smiley: )

Vincent ( mode bidouille ).

Vincent a écrit :

Hum,

Faute de réponses plus constructives, je peux vous proposer un test :
Si vous êtes en version "1_9_3" ou proche, éditez le fichier "inc/spiplistes_api.php" et au niveau de la fonction
"function spiplistes_assembler_patron ($path_patron, $contexte)" , faites les modification suivantes :
(...)

Merci de me tenir au jus de vos tests :wink: ( en précisant vos versions spip et spip listes SVP si c'est pas trop en demander :smiley: )

Vincent ( mode bidouille ).

Merci ! J'ai appliqué ta modif mais je me retrouve avec ça :
Parse error: syntax error, unexpected T_STRING in /var/www/virtual/catholique-saint-brieuc.cef.fr/brieucbr/plugins/auto/spip-listes_1_9_3/inc/spiplistes_api.php on line 888
C'est dans cette ligne :$result_html =
                $patron_html
                 ? recuperer_fond($patron_html, $contexte)
                //? recuperer_page(generer_url_public('patron_switch')."&".spiplistes_http_build_query($contexte,"","&"),true)
                : ""
                ;

Je pense qu'il y a un pb de recopie de signe genre saut de ligne ou truc comme cela qui coince... Moi j'ai du mail avec le ? recuperer et //? à la ligne suivante, ainsi que le :" ", mais je en suis pas spécialiste de php. Mais je suis preneur d'explications :wink:

Hello !

Dans ce cas, le plus simple est d'expliquer le pourquoi du comment, tu pourras ainsi faire les modifications sans soucis !
En fait l'idée est la suivante: l'auteur semblait hésiter entre les deux fonctions "recuperer_fond" et "recuperer_page".

Il emploie sur les lignes concernées l'opérateur ? qui permet de faire un test et de renvoyer en fonction une valeur ou une autre ( et dans notre cas, de l'assigner à la variable "patron_html". Ainsi, si recuperer fond "marche" et renvoie un patron interprété, il est affecté à "patron_html", sinon, elle reçoit une chaine vide: "".
               $patron_html = $patron_html ? recuperer_fond($patron_html, $contexte) : "" ;

Pour plus de détail, voici une page qui explique la chose mieux que ce que je pourrais faire :
http://fr.php.net/manual/fr/language.operators.comparison.php#language.operators.comparison.ternary

Dans la fonction qui nous intéresse, le code à été éclaté sur plusieurs lignes pour pouvoir employer un commentaire sur une des lignes: // .
Ca permet de basculer facilement le test sur l'un ou l'autre des deux fonctions, juste en déplaçant le "//"au début de la ligne qui ne doit pas être exécutée.

Deux blocs de lignes similaires sont employés: l'un pour le template html, l'autre pour un éventuel template texte, il faut donc modifier les deux de la meme manière pour etre cohérent sur la manière d'interpréter les templates.

Donc si tu as un souci, le mieux est de remettre le fichier d'origine et de bouger les "//" et en évitant de copier coller mon mail :wink:

Bonjour,

Je passe aux nouvelles : avez vous pu faire les modifications ?
Si oui, ça à donné quoi ?

Vincent a écrit :

Bonjour,

Je passe aux nouvelles : avez-vous pu faire les modifications ?
Si oui, ça a donné quoi ?

Eh bien ça a l'air de marcher ! Merci :slight_smile:
(BoOz lira sans doute ce post...)

--
Philippe G.

Aha ...

Chez moi et chez Philippe, cela semble calmer le jeu ... C'est moche ca :s
Tu n'aurais pas des fois un problème de charset ?
( As tu tenté de forcer le charset à utf-8 dans spip listes ? Et quel est le charset par défaut de ton site ? )

Et en passant, as tu pris soin de re-générer une nouvelle liste de diffusion après avoir fait les modifications ?
( car si tu as pris une liste déjà existante, les billes sont déjà en cache normalement ).
Une purge du cache doit marcher aussi, mais dans le doute ...