diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index e50dcc976ead2f55fc14569f0f24e60bd51eb3a3..fdbf1697c114d63e2ada087d23611da41748e347 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -478,8 +478,7 @@ function centrer($letexte) {
 
 function filtrer_ical ($texte) {
 	$texte = html2unicode($texte);
-	if ('utf-8' <> ($charset = lire_meta('charset')))
-		$texte = unicode2charset(charset2unicode($texte, $charset, 1), 'utf-8');
+	$texte = unicode2charset(charset2unicode($texte, lire_meta('charset'), 1), 'utf-8');
 	$texte = ereg_replace("\n", " ", $texte);
 	$texte = ereg_replace(",", "\,", $texte);
 
diff --git a/spip_cal.php3 b/spip_cal.php3
index 673e1fffcef18308fc6c646d4f172156f6d841df..a96e0f8a62fbd4ce1cbaa2c6f6e4aa15854bc810 100644
--- a/spip_cal.php3
+++ b/spip_cal.php3
@@ -16,13 +16,10 @@ function ligne_x ($texte) {
 	echo $texte."<br>";
 }
 function ligne ($texte) {
-	echo $texte."\n";
+	echo filtrer_ical($texte)."\n";
 }
 
-
-
-if (!$charset = lire_meta('charset')) $charset = 'utf-8';
-$nom_site = filtrer_ical(lire_meta("nom_site"));
+$nom_site = lire_meta("nom_site");
 $adresse_site = lire_meta("adresse_site");
 
 // securite
@@ -38,15 +35,10 @@ if (verifier_low_sec($id_auteur, $cle, 'ical')) {
 		$id_utilisateur=$row['id_auteur'];
 		$nom_utilisateur=$row['nom'];
 		$statut_utilisateur=$row['statut'];
-		$nom_utilisateur = filtrer_ical(unicode2charset(charset2unicode($nom_utilisateur, $charset, 1), 'utf-8'));
 	}
 }
 
-
-@header ("content-type:text/calendar");
-
-
-
+@header("content-type:text/calendar; charset=utf-8");
 
 if ($id_utilisateur) {
 	if (!$type) {
@@ -63,18 +55,17 @@ if ($id_utilisateur) {
 			$date_heure=$row["date_heure"];
 			$date_heure_fin=$row["date_fin"];
 			//$titre=typo($row["titre"]);
-			$titre = filtrer_ical($row["titre"]);
-			$texte = filtrer_ical($row["texte"]);
+			$titre = $row["titre"];
+			$texte = $row["texte"];
 			$type=$row["type"];
-	
+
 			if ($type == 'normal') {
-				$le_type = filtrer_ical(_T('info_message_2'));
+				$le_type = _T('info_message_2');
 				$result_auteurs=spip_query("SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_messages AS lien WHERE (lien.id_message='$id_message' AND lien.id_auteur=auteurs.id_auteur)");
 				while($row_auteur=spip_fetch_array($result_auteurs)){
 					$id_auteur=$row_auteur['id_auteur'];
 					$nom_auteur=$row_auteur['nom'];
 					$email = $row_auteur ['email'];
-					$nom_auteur = filtrer_ical($nom_auteur);
 	
 					if ($id_auteur != $id_utilisateur) $titre = $titre." - ".$nom_auteur;
 					
@@ -83,10 +74,10 @@ if ($id_utilisateur) {
 				}
 			}
 			else if ($type == 'pb') {
-				$le_type = filtrer_ical(_T('info_pense_bete'));
+				$le_type = _T('info_pense_bete');
 			}
 			else if ($type == 'affich') {
-				$le_type = filtrer_ical(_T('info_annonce'));
+				$le_type = _T('info_annonce');
 				$titre = "[$nom_site] $titre";
 			}
 	
@@ -94,8 +85,8 @@ if ($id_utilisateur) {
 			ligne ("SUMMARY:".$titre);
 			ligne ("DESCRIPTION:$texte");
 			ligne ("UID:mess$id_message @ $adresse_site");
-				ligne ("DTSTAMP:".date_ical($date_heure));
-				ligne ("DTSTART:".date_ical($date_heure));
+			ligne ("DTSTAMP:".date_ical($date_heure));
+			ligne ("DTSTART:".date_ical($date_heure));
 			if ($date_heure_fin > $date_heure) ligne ("DTEND:".date_ical($date_heure_fin));
 
 			ligne ("CATEGORIES:$le_type");
@@ -110,18 +101,17 @@ if ($id_utilisateur) {
 		while($row=spip_fetch_array($result_messages)){
 			$id_message=$row['id_message'];
 			$date_heure=$row["date_heure"];
-			$titre = filtrer_ical($row["titre"]);
-			$texte = filtrer_ical($row["texte"]);
+			$titre = $row["titre"];
+			$texte = $row["texte"];
 			$type=$row["type"];
 	
 			if ($type == 'normal') {
-				$le_type = filtrer_ical(_T('info_message_2'));
+				$le_type = _T('info_message_2');
 				$result_auteurs=spip_query("SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_messages AS lien WHERE (lien.id_message='$id_message' AND lien.id_auteur=auteurs.id_auteur)");
 				while($row_auteur=spip_fetch_array($result_auteurs)){
 					$id_auteur=$row_auteur['id_auteur'];
 					$nom_auteur=$row_auteur['nom'];
 					$email = $row_auteur ['email'];
-					$nom_auteur = filtrer_ical($nom_auteur);
 	
 					if ($id_auteur != $id_utilisateur) $titre = $titre." - ".$nom_auteur;
 					
@@ -130,10 +120,10 @@ if ($id_utilisateur) {
 				}
 			}
 			else if ($type == 'pb') {
-				$le_type = filtrer_ical(_T('info_pense_bete'));
+				$le_type = _T('info_pense_bete');
 			}
 			else if ($type == 'affich') {
-				$le_type = filtrer_ical(_T('info_annonce'));
+				$le_type = _T('info_annonce');
 				$titre = "[$nom_site] $titre";
 			}
 			
@@ -141,54 +131,60 @@ if ($id_utilisateur) {
 			ligne ("SUMMARY:".$titre);
 			ligne ("DESCRIPTION:$texte");
 			ligne ("UID:mess$id_message @ $adresse_site");
-				ligne ("DTSTAMP:".date_ical($date_heure));
-				ligne ("DTSTART:".date_ical($date_heure));
+			ligne ("DTSTAMP:".date_ical($date_heure));
+			ligne ("DTSTART:".date_ical($date_heure));
 			ligne ("CATEGORIES:$le_type");
-			ligne("URL:$adresse_site/ecrire/message.php3?id_message=$id_message");
+			ligne ("URL:$adresse_site/ecrire/message.php3?id_message=$id_message");
 			ligne ("END:VTODO");
-			
+
 		}
 	
 		// Articles et breves proposes
+		$titres = Array();
 		$result_articles = spip_query("SELECT id_article, titre, date FROM spip_articles WHERE statut = 'prop'");
 		while($row=spip_fetch_array($result_articles)){
 			$id_article=$row['id_article'];
-			$titre = filtrer_ical($row['titre']." ("._T('info_article_propose').")");
+			$titre = supprimer_numero($row['titre']);
+			$titres[] = $titre;
 			$date_heure = $row['date'];
 			$nb_articles ++;
 			ligne ("BEGIN:VEVENT");
-			ligne ("SUMMARY:[$nom_site] $titre ");
+			ligne ("SUMMARY:[$nom_site] $titre ("._T('info_article_propose').")");
 			ligne ("UID:article$id_article @ $adresse_site");
 			ligne ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure))));
 			ligne ("DTSTART;VALUE=DATE:".date ("Ymd", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure))));
-			ligne ("CATEGORIES:".filtrer_ical(_T('info_article_propose')));
+			ligne ("CATEGORIES:"._T('info_article_propose'));
 			ligne("URL:$adresse_site/ecrire/articles.php3?id_article=$id_article");
 			ligne ("END:VEVENT");
 		}
+
 		$result_articles = spip_query("SELECT id_breve, titre, date_heure FROM spip_breves WHERE statut = 'prop'");
 		while($row=spip_fetch_array($result_articles)){
 			$id_breve=$row['id_breve'];
-			$titre = filtrer_ical($row['titre']." ("._T('item_breve_proposee').")");
+			$titre = supprimer_numero($row['titre']);
+			$titres[] = $titre;
 			$date_heure = $row['date_heure'];
 			$nb_breves++;
 			ligne ("BEGIN:VEVENT");
-			ligne ("SUMMARY:[$nom_site] $titre ");
+			ligne ("SUMMARY:[$nom_site] $titre ("._T('item_breve_proposee').")");
 			ligne ("UID:breve$id_breve @ $adresse_site");
 			ligne ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure))));
 			ligne ("DTSTART;VALUE=DATE:".date ("Ymd", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure))));
-			ligne ("CATEGORIES:".filtrer_ical(_T('item_breve_proposee')));
-			ligne("URL:$adresse_site/ecrire/breves_voir.php3?id_breve=$id_breve");
+			ligne ("CATEGORIES:"._T('item_breve_proposee'));
+			ligne ("URL:$adresse_site/ecrire/breves_voir.php3?id_breve=$id_breve");
 			ligne ("END:VEVENT");
 
 		}
 
 		if ($nb_articles + $nb_breves > 0) {
-			if ($nb_articles > 0) $titre_prop[] = filtrer_ical(_T('info_articles_proposes')).": ".$nb_articles;
-			if ($nb_breves > 0) $titre_prop[] = filtrer_ical(_T('info_breves_valider')).": ".$nb_breves;
+			if ($nb_articles > 0) $titre_prop[] = _T('info_articles_proposes').": ".$nb_articles;
+			if ($nb_breves > 0) $titre_prop[] = _T('info_breves_valider').": ".$nb_breves;
 			$titre = join($titre_prop," / ");
 			ligne ("BEGIN:VTODO");
 			ligne ("SUMMARY:[$nom_site] $titre");
 			ligne ("UID:prop @ $adresse_site");
+			$texte = join($titres," / ");
+			ligne ("DESCRIPTION:$texte");
 			
 			$today=getdate(time());
 			$jour = $today["mday"];
@@ -196,8 +192,8 @@ if ($id_utilisateur) {
 			$annee=$today["year"];
 			ligne ("DTSTAMP:".date ("Ymd\THis", mktime (12,0,0,$mois,$jour,$annee)));
 			ligne ("DTSTART:".date ("Ymd\THis", mktime (12,0,0,$mois,$jour,$annee)));
-			ligne ("CATEGORIES:".filtrer_ical(_T('icone_a_suivre')));
-			ligne("URL:$adresse_site/ecrire/");
+			ligne ("CATEGORIES:"._T('icone_a_suivre'));
+			ligne ("URL:$adresse_site/ecrire/");
 			ligne ("END:VTODO");
 		}
 
@@ -208,18 +204,17 @@ if ($id_utilisateur) {
 		while($row=spip_fetch_array($result_messages)){
 			$id_message=$row['id_message'];
 			$date_heure=$row["date_heure"];
-			$titre = filtrer_ical($row["titre"]);
-			$texte = filtrer_ical($row["texte"]);
+			$titre = $row["titre"];
+			$texte = $row["texte"];
 			$type=$row["type"];
 	
 			if ($type == 'normal') {
-				$le_type = filtrer_ical(_T('info_message_2'));
+				$le_type = _T('info_message_2');
 				$result_auteurs=spip_query("SELECT auteurs.* FROM spip_auteurs AS auteurs, spip_auteurs_messages AS lien WHERE (lien.id_message='$id_message' AND lien.id_auteur=auteurs.id_auteur)");
 				while($row_auteur=spip_fetch_array($result_auteurs)){
 					$id_auteur=$row_auteur['id_auteur'];
 					$nom_auteur = $row_auteur['nom'];
-					$email = filtrer_ical($row_auteur ['email']);
-					$nom_auteur = filtrer_ical($nom_auteur);
+					$email = $row_auteur ['email'];
 	
 					if ($id_auteur != $id_utilisateur) $titre = $nom_auteur." - ".$titre;
 					
@@ -230,25 +225,24 @@ if ($id_utilisateur) {
 				$result_forum = spip_query($query_forum);
 				if ($row_forum = spip_fetch_array($result_forum)) {
 					$date_heure = $row_forum["date_heure"];
-					$texte = filtrer_ical($row_forum["texte"]);
-					$titre = filtrer_ical($row_forum["titre"]);
+					$texte = $row_forum["texte"];
+					$titre = $row_forum["titre"];
 					$id_auteur = $row_forum["id_auteur"];
 
 					$result_auteurs2 = spip_query("SELECT * FROM spip_auteurs WHERE id_auteur = $id_auteur");
 					if ($row_auteur2 = spip_fetch_array($result_auteurs2)){
 						$nom_auteur = $row_auteur2['nom'];
 						$email = $row_auteur2 ['email'];
-						$nom_auteur = filtrer_ical($nom_auteur);
 						
 						$titre = $nom_auteur." - ".$titre;
 					}
 				}
 			}
 			else if ($type == 'pb') {
-				$le_type = filtrer_ical(_T('info_pense_bete'));
+				$le_type = _T('info_pense_bete');
 			}
 			else if ($type == 'affich') {
-				$le_type = filtrer_ical(_T('info_annonce'));
+				$le_type = _T('info_annonce');
 				$titre = "[$nom_site] $titre";
 			}
 
@@ -277,20 +271,20 @@ if ($id_utilisateur) {
 			
 				$id_forum=$row['id_forum'];
 				$date_heure = $row['date_heure'];
-				$titre = filtrer_ical($row['titre']);
-				$texte = filtrer_ical($row['texte']);
-				$auteur = filtrer_ical($row['auteur']);
-				$email_auteur = filtrer_ical($row['email_auteur']);
+				$titre = $row['titre'];
+				$texte = $row['texte'];
+				$auteur = $row['auteur'];
+				$email_auteur = $row['email_auteur'];
 				if ($email_auteur) $email_auteur = "<$email_auteur>";
 				
 				ligne ("BEGIN:VEVENT");
-				ligne ("SUMMARY:[$nom_site] $titre ".filtrer_ical(_T('icone_forum_suivi')));
+				ligne ("SUMMARY:[$nom_site] $titre "._T('icone_forum_suivi'));
 				ligne ("DESCRIPTION:$texte\r$auteur $email_auteur");
 				ligne ("UID:forum$id_forum @ $adresse_site");
 				ligne ("DTSTAMP:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure))));
 				ligne ("DTSTART:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure),0,mois($date_heure),jour($date_heure),annee($date_heure))));
 				ligne ("DTEND:".date ("Ymd\THis", mktime (heures($date_heure),minutes($date_heure)+60,0,mois($date_heure),jour($date_heure),annee($date_heure))));
-				ligne ("CATEGORIES:".filtrer_ical(_T('icone_forum_suivi')));
+				ligne ("CATEGORIES:"._T('icone_forum_suivi'));
 				ligne("URL:$adresse_site/ecrire/controle_forum.php3");
 				ligne ("END:VEVENT");
 	
@@ -309,7 +303,7 @@ if ($id_utilisateur) {
 				$annee=$today["year"];
 				ligne ("DTSTAMP:".date ("Ymd\THis", mktime (12,0,0,$mois,$jour,$annee)));
 				ligne ("DTSTART:".date ("Ymd\THis", mktime (12,0,0,$mois,$jour,$annee)));
-				ligne ("CATEGORIES:".filtrer_ical(_T('icone_forum_suivi')));
+				ligne ("CATEGORIES:"._T('icone_forum_suivi'));
 				ligne("URL:$adresse_site/ecrire/controle_forum.php3");
 				ligne ("END:VTODO");
 			}