diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index c76404bac034de7849e0146cff6499110b459714..f7ccd4c5197f52c93a603233f97cb37e0876efff 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -218,6 +218,10 @@ function PtoBR($texte){
 
 // Couper les "mots" de plus de $l caracteres (souvent des URLs)
 function lignes_longues($texte, $l = 70) {
+	// Passer en utf-8 pour ne pas avoir de coupes trop courtes avec les &#xxxx;
+	// qui prennent 7 caracteres
+	$texte = unicode_to_utf_8(filtrer_entites($texte));
+
 	// echapper les tags (on ne veut pas casser les a href=...)
 	$tags = array();
 	if (preg_match_all('/<.*>/Ums', $texte, $t, PREG_SET_ORDER)) {
@@ -238,7 +242,7 @@ function lignes_longues($texte, $l = 70) {
 		$texte = str_replace(" @@SPIPTAG$n@@ ", $tag, $texte);
 	}
 
-	return $texte;
+	return importer_charset($texte, 'utf-8');
 }
 
 // Majuscules y compris accents, en HTML
diff --git a/ecrire/inc_texte.php3 b/ecrire/inc_texte.php3
index 51fb5daf44f3b057a6805fdacca5ea997bbf2b83..28512094ced23f84866efbf68e1c07881fc19c7a 100644
--- a/ecrire/inc_texte.php3
+++ b/ecrire/inc_texte.php3
@@ -160,7 +160,7 @@ function echappe_html($letexte, $source='SOURCEPROPRE', $no_transform=false) {
 			$lecode = trim(entites_html($regs[9]));
 			$total_lignes = substr_count($lecode, "\n");
 
-			$les_echap[$num_echap] = "<form action=\"/\" method=\"get\"><textarea readonly='readonly' cols='40' rows='$total_lignes' class='spip_cadre' dir='ltr'>".$lecode."</textarea></form>";
+			$les_echap[$num_echap] = "<form action=\"/\" method=\"get\"><div><textarea readonly='readonly' cols='40' rows='$total_lignes' class='spip_cadre' dir='ltr'>".$lecode."</textarea></div></form>";
 			// Les marques ci-dessous indiquent qu'on ne veut pas paragrapher
 			$marqueur_echap = "\n\n</no p>$marqueur_echap<no p>\n\n";
 		}