diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 25abe37a97c34ab70ee0606afcee17b539e86039..bcd6ad015d027dca5441a8d833c98336dc3a983d 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -242,6 +242,16 @@ function couper($texte, $taille=50) {
 	// supprimer les tableaux
 	$texte = ereg_replace("(^|\r)\|.*\|\r", "\r", $texte);
 
+	// corriger la longueur de coupe 
+	// en fonction de la presence de caracteres utf
+	if ($GLOBALS['meta']['charset']=='utf-8'){
+		$long = charset2unicode($texte);
+		$long = spip_substr($long, 0, max($taille,1));
+		$nbcharutf = preg_match_all("/(&#[0-9]{3,5};)/",$long,$matches);
+		$taille += $nbcharutf;
+	}
+	
+	
 	// couper au mot precedent
 	$long = spip_substr($texte, 0, max($taille-4,1));
 	$court = ereg_replace("([^[:space:]][[:space:]]+)[^[:space:]]*\n?$", "\\1", $long);