diff --git a/.gitattributes b/.gitattributes
index 1abba21f8eab2434bee59ac54de6583b32ecbc7b..268d1fd7953e4f7fd0b82c548063bd461bd1d57e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -394,6 +394,7 @@ ecrire/action/tourner.php -text
 ecrire/action/virtualiser.php -text
 ecrire/balise/index.php -text
 ecrire/base/admin_repair.php -text
+ecrire/base/convert_sql_utf8.php -text
 ecrire/base/convert_utf8.php -text
 ecrire/base/delete_all.php -text
 ecrire/base/import_all.php -text
@@ -464,6 +465,7 @@ ecrire/exec/configuration.php -text
 ecrire/exec/configurer.php -text
 ecrire/exec/controle_forum.php -text
 ecrire/exec/controle_petition.php -text
+ecrire/exec/convert_sql_utf8.php -text
 ecrire/exec/convert_utf8.php -text
 ecrire/exec/copier_local.php -text
 ecrire/exec/dater.php -text
diff --git a/ecrire/base/convert_sql_utf8.php b/ecrire/base/convert_sql_utf8.php
new file mode 100644
index 0000000000000000000000000000000000000000..f17cbdb685061cf5f25ba17b2e56fe54952745ae
--- /dev/null
+++ b/ecrire/base/convert_sql_utf8.php
@@ -0,0 +1,112 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+
+// http://doc.spip.org/@base_convert_utf8_dist
+function base_convert_sql_utf8_dist($titre, $reprise=false)
+{
+	// poser un verrou (et abandonner si l'action est en cours)
+
+	if (!spip_get_lock('conversion_charset_sql')) {
+		echo minipres(_T('utf8_convert_attendez'));
+		exit;
+	}
+
+	include_spip('inc/meta');
+	ecrire_meta('convert_sql_utf8','oui','non');
+	echo install_debut_html($titre);
+	
+	echo "<p>", _T('utf8_convert_timeout'), "</p><hr />\n";
+	
+	convert_sql_utf8();
+
+	echo "<p><b>"._T('utf8_convert_termine')."</b></p>";
+	effacer_meta('convert_sql_utf8');
+
+	// bouton "retour au site" + redirige_par_entete
+	echo "<p style='text-align: right'>",
+	  "<a href='", generer_url_ecrire("config_lang"), "'> &gt;&gt; ",
+	  _T('icone_retour'),"</a></p>",
+	  install_fin_html();
+}
+
+function convert_sql_utf8(){
+	include_spip('base/db_mysql');
+	
+	$charset_spip = $GLOBALS['meta']['charset'];
+	$charset_supporte = false;
+	$utf8_supporte = false;	
+	// verifier que mysql gere le charset courant pour effectuer les conversions 
+	if ($c = spip_mysql_character_set($charset_spip)){
+		$sql_charset = $c['charset'];
+		$sql_collation = $c['collation'];
+		$charset_supporte = true;
+	}
+	if (!$charset_supporte){
+		$res = spip_query("SHOW CHARACTER SET");
+		while ($row = spip_fetch_array($res)){
+			if ($row['Charset']=='utf8') $utf8_supporte = true;
+		}
+		echo _L("le Charset SPIP actuel $charset_spip n'est pas supporte par votre serveur mySql<br/>");
+		if ($utf8_supporte)
+			echo _L("Votre serveur supporte utf-8, vous devriez convertir votre site en utf-8 avant de recommencer cette operation");
+			echo install_fin_html();
+		exit;
+	}
+	echo _L("Charset Actuel du site SPIP : $charset_spip<br/>");
+	echo _L("Conversion des champs des tables spip de type latin1 vers <b>$sql_charset</b> (collation $sql_collation) <br/>");
+	// lister les collations et leur charset correspondant
+	$res = spip_query("SHOW COLLATION");
+	$charset2collations = array();
+	while ($row = spip_fetch_array($res)){
+		$charset2collations[$row['Collation']] = $row['Charset'];
+	}
+	
+	$count = 0;
+	// lister les tables spip
+	$res = spip_query("SHOW TABLES");
+	while (($row = spip_fetch_array($res,SPIP_NUM)) /*&& ($count<1)*/){
+		$nom = $row[0];
+		if (preg_match(',^'.$GLOBALS['table_prefix'].'_(.*)$,',$nom,$regs)){
+			$count++;
+			$nom = $regs[1];
+			echo "<hr/>$nom<br/>";
+			// lister les champs de la table
+			$res2 = spip_query("SHOW FULL COLUMNS FROM spip_$nom");
+			while ($row2 = spip_fetch_array($res2)){
+				$collation = $row2['Collation'];
+				$champ = $row2['Field'];
+				if ($collation!="NULL" 
+					&& isset($charset2collations[$collation]) 
+					&& $charset2collations[$collation]=='latin1'){
+					echo "Conversion de '$champ' depuis $collation (".$charset2collations[$collation]."):";
+					// conversion de latin1 vers le charset reel du contenu
+					$type_texte= $row2['Type'];
+					$type_blob = "blob";
+					if (strpos($type_texte,"text")!==FALSE) $type_blob = str_replace("text","blob",$type_texte);
+					echo spip_query("ALTER TABLE spip_$nom CHANGE $champ $champ $type_blob")." ";
+					echo spip_query("ALTER TABLE spip_$nom CHANGE $champ $champ $type_texte CHARACTER SET $sql_charset COLLATE $sql_collation")." ";
+					echo "<br/>";
+				}
+			}
+			// on ne change le charset par defaut de la table que quand tous ses champs sont convertis
+			spip_query("ALTER TABLE spip_$nom DEFAULT CHARACTER SET $sql_charset COLLATE $sql_collation");
+		}
+	}
+	ecrire_meta('charset_sql_base',$sql_charset,'non');
+	ecrire_meta('charset_sql_connexion',$sql_charset,'non');
+	ecrire_metas();
+	spip_release_lock('conversion_charset_sql');
+}
+?>
\ No newline at end of file
diff --git a/ecrire/exec/convert_sql_utf8.php b/ecrire/exec/convert_sql_utf8.php
new file mode 100644
index 0000000000000000000000000000000000000000..f24ec910c23a9536d2757d0d5d5648a8bd2b2132
--- /dev/null
+++ b/ecrire/exec/convert_sql_utf8.php
@@ -0,0 +1,75 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2007                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+// En cas d'erreur, une page admin normale avec bouton de retour
+
+// http://doc.spip.org/@convert_utf8_non
+function convert_utf8_non($action, $message) {
+
+	echo minipres($action, ('<p>'.$message. "</p>\n<p style='text-align: right'><a href='" . generer_url_ecrire("config_lang"). "'> &gt;&gt; "._T('icone_retour')."</a>"));
+	exit;
+}
+
+function exec_convert_sql_utf8_dist() {
+	include_spip('inc/minipres');
+	include_spip('inc/meta');
+	include_spip('inc/charsets');
+	lire_metas();
+
+	$charset_spip = $GLOBALS['meta']['charset'];
+	// Definir le titre de la page (et le nom du fichier admin)
+	//$action = _T('utf8_convertir_votre_site');
+	$action = _L("Conversion de la base en $charset_spip");
+
+	// si meta deja la, c'est une reprise apres timeout.
+	if ($GLOBALS['meta']['convert_sql_utf8']) {
+		$base = charger_fonction('convert_sql_utf8', 'base');
+		$base($action, true);
+	} else {
+		$charset_supporte = false;
+		$utf8_supporte = false;	
+		// verifier que mysql gere le charset courant pour effectuer les conversions 
+		include_spip('base/db_mysql');
+		if ($c = spip_mysql_character_set($charset_spip)){
+			$sql_charset = $c['charset'];
+			$sql_collation = $c['collation'];
+			$charset_supporte = true;
+		}
+		if (!$charset_supporte){
+			$res = spip_query("SHOW CHARACTER SET");
+			while ($row = spip_fetch_array($res)){
+				if ($row['Charset']=='utf8') $utf8_supporte = true;
+			}
+			echo _L("le Charset SPIP actuel $charset_spip n'est pas supporte par votre serveur mySql<br/>");
+			if ($utf8_supporte)
+				echo _L("Votre serveur supporte utf-8, vous devriez convertir votre site en utf-8 avant de recommencer cette operation");
+				echo install_fin_html();
+			exit;
+		}
+
+		$commentaire = "";
+		//$commentaire = _T('utf8_convert_avertissement',
+		//	array('orig' => $charset_orig,'charset' => 'utf-8'));
+		$commentaire .=  "<p><small>"
+		. http_img_pack('warning.gif', _T('info_avertissement'), "style='width: 48px; height: 48px; float: right;margin: 10px;'");
+		$commentaire .= _T('utf8_convert_backup', array('charset' => 'utf-8'))
+		."</small>";
+		$commentaire .= '<p>'._T('utf8_convert_timeout');
+		$commentaire .= "<hr />\n";
+
+		$admin = charger_fonction('admin', 'inc');
+		$admin('convert_sql_utf8', $action, $commentaire);
+	}
+}
+?>
\ No newline at end of file