Disclaimer : le correctif (pour ne pas dire le hack crade) part des principes suivants :
- il considère que le blog est en UTF-8. Si vous avez un blog en ISO-8859-1, ne l'appliquez pas. De toute manière dans ce cas vous n'êtes pas concerné par le problème.
- il considère que PHP est compilé avec le support des caractères multi-octets. Si vous utilisez PHP 5.x, c'est le cas par défaut. Si vous utilisez PHP 4.x, reportez vous au manuel PHP pour savoir comment activer le support.
Pour effectuer la modification, il vous faut modifier le fichier « inc/libs/lib.util.php » présent dans votre répertoire de Dotclear.
Dans ce fichier, remplacez la fonction « cutString » par le contenu suivant :
# Couper une chaîne aux espaces
function cutString($str,$l)
{
$s = preg_split('/([\s]+)/',$str,-1,PREG_SPLIT_DELIM_CAPTURE);
$res = '';
$L = 0;
mb_internal_encoding("UTF-8");
if (mb_strlen($s[0]) >= $l) {
return mb_substr($s[0],0,$l);
}
foreach ($s as $v)
{
$L = $L+mb_strlen($v);
if ($L > $l) {
break;
} else {
$res .= $v;
}
}
return trim($res);
}
Twitter
Facebook
Google+
LinkedIn
Commentaires
Attention : tu fournis une version incomplète du fichier lib.util.php pour un dotclear 1.2.3 (méthode isUTF8 manquante).
PepMerci, c'est corrigé maintenant.
Arnaud BoudouLorsque dans le titre du billet, il y a des lettres accentuées, il semblerait que le fil RSS généré? perde également l'encodage UTF8.
obniD'autres personnes ont-elles remarqué cela ?
Pas de problème de mon côté. Du moins je n'ai jamais eu le cas.
Arnaud Boudou