diff --git a/ecrire/inc/json.php b/ecrire/inc/json.php
index c134d2dff4b9a9e09f96370714e61b1923c3ddde..bf636ddae6e16723bb2d91012f8c56417eae172f 100644
--- a/ecrire/inc/json.php
+++ b/ecrire/inc/json.php
@@ -28,7 +28,7 @@ function var2js($var) {
 		case is_null($var) :
 			return 'null';
 		case is_string($var) :
-			return '"' . str_replace('&', '&'/*'\x26'*/, addcslashes($var, "\"\\\n\r/")) . '"';
+			return '"' .addcslashes($var, "\"\\\n\r/") . '"';
 		case is_bool($var) :
 			return $var ? 'true' : 'false';
 		case is_scalar($var) :
@@ -62,9 +62,13 @@ function var2js($var) {
 	return false;
 }
 
+if(!function_exists('json_encode')) {
+	function json_encode($v) { return var2js($v); }
+}
+
 // http://doc.spip.org/@json_export
 function json_export($var) {
-	$var = var2js($var);
+	$var = json_encode($var);
 
 	// flag indiquant qu'on est en iframe et qu'il faut proteger nos
 	// donnees dans un <textarea> ; attention $_FILES a ete vide par array_pop