Disclaimer : le correctif (pour ne pas dire le hack crade) part des principes suivants :

  1. 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.
  2. 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);
        }