diff --git a/ecrire/balise/url_.php b/ecrire/balise/url_.php
index dd1e4fa73a84a1178cb8f9df4b00a512e6d49f30..a5f8800c3f37643dab0fa3014a69636cbf8d61c8 100644
--- a/ecrire/balise/url_.php
+++ b/ecrire/balise/url_.php
@@ -58,7 +58,7 @@ function generer_generer_url_arg($type, $p, $_id)
 	}
 	else 
 		$s = ", '', '', true";
-	return "generer_url_entite($_id, '$type'$s)";
+	return "urlencode_1738(generer_url_entite($_id, '$type'$s))";
 }
 
 
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 61a5971eeaf0e7268c10679979745913c41fadd2..66e8cfc67a44ca1f7e7df4cf2427112b0fbd93c4 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -804,6 +804,14 @@ function generer_url_entite($id='', $entite='', $args='', $ancre='', $public=NUL
 	return '';
 }
 
+// Transformer les caracteres utf8 d'une URL (farsi par ex) selon la RFC 1738
+function urlencode_1738($url) {
+	return str_replace(
+		array('%2F','%3D','%3F','%26'),
+		array('/'  ,'='  ,'?'  ,'&'),
+		rawurlencode($url));
+}
+
 // http://doc.spip.org/@generer_url_entite_absolue
 function generer_url_entite_absolue($id='', $entite='', $args='', $ancre='', $connect=NULL)
 {