diff --git a/ecrire/action/iconifier.php b/ecrire/action/iconifier.php
index a29f7a21ee857cd46180e021bfa9abb47a5e171c..c87afd4b95aec8ce4098110fc1cbe090fa5ef4e9 100644
--- a/ecrire/action/iconifier.php
+++ b/ecrire/action/iconifier.php
@@ -20,7 +20,7 @@ function action_iconifier_dist()
 		include_spip('inc/minipres');
 		minipres(_T('info_acces_interdit'));
 	}
-	$arg = urldecode($arg);
+	$arg = rawurldecode($arg);
 	if (!preg_match(',^unlink\s,',$arg))
 		action_spip_image_ajouter_dist();
 	else	action_spip_image_effacer_dist();
@@ -29,7 +29,7 @@ function action_iconifier_dist()
 function action_spip_image_effacer_dist() {
 
 	global $arg;
-	$arg = preg_replace(',^unlink\s*,','',urldecode($arg));
+	$arg = preg_replace(',^unlink\s*,','',rawurldecode($arg));
 	if (!strstr($arg, ".."))
 		@unlink(_DIR_LOGOS . $arg);
 }
diff --git a/ecrire/balise/formulaire_admin.php b/ecrire/balise/formulaire_admin.php
index 0805cd4c9d4889926dcfd603afadc6334b60bc98..84681acef619fe23933ab0158e27dc7b0e26d15a 100644
--- a/ecrire/balise/formulaire_admin.php
+++ b/ecrire/balise/formulaire_admin.php
@@ -108,7 +108,7 @@ function balise_FORMULAIRE_ADMIN_dyn($float='', $debug='') {
 		(parametre_url(self(), 'var_mode', 'debug', '&')
 			.'&var_mode_affiche=validation') :
 		('http://validator.w3.org/check?uri='
-		. urlencode("http://" . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
+		. rawurlencode("http://" . $_SERVER['HTTP_HOST'] . nettoyer_uri())));
 
 	// hack - ne pas avoir la rubrique si un autre bouton est deja present
 	if ($id_article OR $id_breve) unset ($id_rubrique);
diff --git a/ecrire/balise/login_public.php b/ecrire/balise/login_public.php
index 3169b9d91e9c94f997b8c267b437e7994f642b0b..615ad70c65b112aea8cb4a7b64bb027092ad1088 100644
--- a/ecrire/balise/login_public.php
+++ b/ecrire/balise/login_public.php
@@ -47,7 +47,7 @@ function login_explicite($login, $cible) {
 		$cible = parametre_url($cible, 'var_login', '', '&');
 	} else {
 		if (ereg("[?&]url=([^&]*)", $action, $m))
-			$cible = urldecode($m[1]);
+			$cible = rawurldecode($m[1]);
 		else
 			$cible = _DIR_RESTREINT ;
 	}
diff --git a/ecrire/balise/url_logout.php b/ecrire/balise/url_logout.php
index 85a2ffbd9714e202898ebd8790326c25a4cf0e48..1b6e5f8e9db2c9932e670ae73fc50e6b0a340353 100644
--- a/ecrire/balise/url_logout.php
+++ b/ecrire/balise/url_logout.php
@@ -28,7 +28,7 @@ function balise_URL_LOGOUT_dyn($cible) {
 		$cible = self();
 
 	return generer_url_public('spip_cookie',
-		"logout_public=".urlencode($login)."&url=" . urlencode($cible)
+		"logout_public=".rawurlencode($login)."&url=" . rawurlencode($cible)
 	);
 }
 ?>
diff --git a/ecrire/exec/breves_voir.php b/ecrire/exec/breves_voir.php
index f9b37a5bef050a9328cf648259dc53b8092cea9b..161f4a247c69325833ce7bea262133dae8144249 100644
--- a/ecrire/exec/breves_voir.php
+++ b/ecrire/exec/breves_voir.php
@@ -220,7 +220,7 @@ fin_cadre_relief();
 echo "<BR><BR>";
 
 echo "\n<div align='center'>";
- icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=prive&id_breve=$id_breve&titre_message=".rawurlencode($titre) . "&adresse_retour=".urlencode( generer_url_ecrire("breves_voir", "id_breve=$id_breve"))),
+ icone(_T('icone_poster_message'), generer_url_ecrire("forum_envoi", "statut=prive&id_breve=$id_breve&titre_message=".rawurlencode($titre) . "&adresse_retour=".rawurlencode( generer_url_ecrire("breves_voir", "id_breve=$id_breve"))),
        "forum-interne-24.gif", "creer.gif");
 echo "</div>";
 
diff --git a/ecrire/exec/sites.php b/ecrire/exec/sites.php
index 194ad9707422be0efd4efcb3ddf334b8a50f0a23..19253d04bdd8bf9e3081267067bcbd821f626df1 100644
--- a/ecrire/exec/sites.php
+++ b/ecrire/exec/sites.php
@@ -531,7 +531,7 @@ echo "<br><br>\n";
  $forum_retour = generer_url_ecrire("sites","id_syndic=$id_syndic", '&');
 
 echo "<div align='center'>";
- icone (_T('icone_poster_message'), generer_url_ecrire('forum_envoi',"id_syndic=$id_syndic&statut=prive&adresse_retour=".urlencode($forum_retour)."&titre_message=$nom_site"), "forum-interne-24.gif", "creer.gif");
+ icone (_T('icone_poster_message'), generer_url_ecrire('forum_envoi',"id_syndic=$id_syndic&statut=prive&adresse_retour=".rawurlencode($forum_retour)."&titre_message=$nom_site"), "forum-interne-24.gif", "creer.gif");
 echo "</div>";
 
 echo "<p align='left'>\n";
diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php
index fc133601416513efc82c35ec4dbbc940c79062bd..f400ca91a58ce41e2967170ec750d14d944a1433 100644
--- a/ecrire/inc/distant.php
+++ b/ecrire/inc/distant.php
@@ -96,10 +96,10 @@ function prepare_donnees_post($donnees, $boundary = '') {
 			foreach ($donnees as $cle => $valeur) {
 				if (is_array($valeur)) {
 					foreach ($valeur as $val2) {
-						$chaine[] = rawurlencode($cle).'='.urlencode($val2);
+						$chaine[] = rawurlencode($cle).'='.rawurlencode($val2);
 					}
 				} else {
-					$chaine[] = rawurlencode($cle).'='.urlencode($valeur);
+					$chaine[] = rawurlencode($cle).'='.rawurlencode($valeur);
 				}
 			}
 			$chaine = implode('&', $chaine);
diff --git a/ecrire/inc/statistiques.php b/ecrire/inc/statistiques.php
index ef28c98984c10df27ab8ff0db356004162fa4915..e09c6912a5f9a0080d157b3873e8728771a00fbc 100644
--- a/ecrire/inc/statistiques.php
+++ b/ecrire/inc/statistiques.php
@@ -133,7 +133,7 @@ function stats_show_keywords($kw_referer, $kw_referer_host) {
 			// supprimer l'eventuelle entite finale mal coupee
 			$keywords = preg_replace('/&#?[a-z0-9]*$/', '', $keywords);
 		}
-		$buffer["keywords"] = trim(entites_html(urldecode(stripslashes($keywords))));
+		$buffer["keywords"] = trim(entites_html(rawurldecode(stripslashes($keywords))));
 	}
 
 	return $buffer;
@@ -177,7 +177,7 @@ function aff_referers ($result, $limit, $plus) {
 			}
 
 			if ($tmp)
-				$lesreferers[$numero][] = "<a href='".quote_amp($referer)."'>".quote_amp(urldecode($tmp))."</a>" . (($visites > 1)?" ($visites)":"");
+				$lesreferers[$numero][] = "<a href='".quote_amp($referer)."'>".quote_amp(rawurldecode($tmp))."</a>" . (($visites > 1)?" ($visites)":"");
 			else
 				$lesliensracine[$numero] += $visites;
 			$lesdomaines[$numero] = $buff["hostname"];