Comme on l’a déjà dit, htmlspecialchars() et compagnie sont désormais (à partir de PHP 5.4) associés à un charset utf-8 par défaut. Ce qui fait planter les sites spip qui tourneraient encore en iso-8859-1.
Un fix qui nous avait paru possible était de remplacer
htmlspecialchars($texte);
par
htmlspecialchars($texte, null, ‘ISO-8859-1’);
Mais je viens de voir que ça pouvait créer un autre problème, cette fonction n’échappant plus les guillemets doubles ( " ).
Donc il va sérieusement falloir s’équiper d’un jeu de tests et d’une fonction spip_htmlspecialchars() [et compagnie…] qui prennent en charge tous les cas de figure.
Ah ben la good news : c’est typiquement le genre de situation où on peut utiliser le plugin TestBuilder pour générer des jeux de tests à partir de la fonction existante (suffit de le faire tourner sur un PHP 5.3 pour faire une photo du comportement existant, et de s’en servir ensuite comme référence fonctionnelle pour la fonction de compatibilité PHP 5.4+).