Skip to Content

Corriger le problème de Spip avec les caractères spéciaux et accentués dans les flux RSS

But de ce document

Ce document contient les modifications à effectuer dans Spip version 1.7.2, pour arriver à avoir des flux RSS prenant correctement en charge les caractères spéciaux et accentués.

Étant donné que j’ai un peu galèré pour arriver à corriger ce problème, j’ai écrit cet article en espérant qu’il serve à d’autres personnes.

Je précise que normalement ce problème est corrigé avec la version 1.8 de Spip.

Modification du fichier « backend.html »

Par défaut, ce fichier n’existe pas.

Il faut donc commencer par copier et renommer le fichier « backend-dist.html » en « backend.html  »

Ensuite, il faut ajouter les lignes suivantes au tout début du fichier pour indiquer l’encodage à utiliser :

<?php

echo "<"."?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">";

?>

Test dans Thunderbird ou Firefox

Pour que la modification soit prise en compte immédiatement, il est possible de modifier le fichier « backend.php3 » en mettant 0 à la place de 3600 comme délai de mise à jour :

$delais = 0;

Une fois que tout fonctionnera correctement, il sera préférable de remettre le délai à 3600, pour limiter la surcharge du serveur.

Dans Thunderbird, pour vérifier que le flux est corrigé, il faut supprimer l’abonnement au site et le recréer, ce qui aura pour effet de rappeler les 10 derniers articles publiés.

Dans Firefox, il faut supprimer et recréer le marque page dynamique.

Avec la modification précédente, le problème des accents est corrigé, mais il reste un problème avec les espaces insécables ajoutés par Spip devant chaque signe «  : »

Création d’un filtre personnalisé pour corriger les espaces insécables

Dans un flux RSS, l’espace insécable est remplacé par la chaîne de caractères suivante «   »

Le problème des espaces insécables apparaît avec Firefox et Thunderbird mais est peut-être corrigé automatiquement avec d’autres lecteurs de flux RSS.

Pour corriger, ce problème, il faut créer un filtre personnalisé. Il faut ajouter ce filtre dans le fichier « mes_fonctions.php3 ». Si ce fichier n’existe pas, il faut le créer en respectant bien la syntaxe du nom car si Spip détecte l’existence de ce fichier, il l’utilisera automatiquement.

Ce filtre personnalisé nommé « filtre_rss », se contente d’effacer la chaîne de caractères « &nbsp ; ».

Voici donc le contenu du fichier « mes_fonctions.php3 » :

<?php

function filtre_rss($texte) {

  $texte = str_replace(" ", "", $texte);

  return $texte;

}

?>

Utilisation du filtre personnalisé

Pour utiliser ce filtre, il faut modifier le fichier « backend.html » et ajouter « |filtre_rss » sur la ligne affichant les 10 derniers titres des articles :

 

 [(#TITRE|texte_backend|filtre_rss)]

Et normalement l’affichage des flux RSS devrait être parfaitement lisible.

Historique des modifications

Version Date Commentaire
0.1 16/05/05 Création par Tony GALMICHE