Convertir une base sql en utf8

Convertir une base sql en utf8v

Introduction

Il se peut que lors d’un changement de version de Mysql , ou bien lors de l’upgrade de l’une de vos machines , vous ayez un problème d’accents dans vos pages internet .
Votre encodage étant deffectueux , il convient de passer votre base de données en UTF-8, ceci à l’aide de quelques manipulations simples.

Installation

urpmi libjconv
installera votre paquetage le plus simplement du monde

Conversion

À présent nous allons exporter la base de données que vous souhaitez convertir en UTF-8.
Pour cela, nous allons utiliser mysqldump:
mysqldump –opt -u root -p ma_base > ma_base.sql
une petite sauvegarde au cas ou :
cp ma_base.sql ma_base.sql.bak
Pour convertir au format utf8
iconv -f iso-8859-1 -t utf8 ma_base.sql > ma_base_utf.sql
Et ensuite reintégrer la base dans le serveur sql : mysql -u root -p ma_base < ma_base_utf.sql

Encoder des fichiers déjà crées

Vous avez commencé à convertir votre site, et vous vous apercevez que vous avez des fichiers précédents encodés en latin. La fonction utf8_encode permet d’encoder une chaine de caractères donnée (encodée en latin1, soit ISO-8859-1) en UTF-8.
Lancer le script suivant dans votre répertoire et tous les fichiers ainsi que ceux de vos sous-répertoires seront encodés

<?php
function encoderDossier ($dossierAEncoder)
{
$dossier = opendir ($dossierAEncoder);while ($fichierAEncoder = readdir ($dossier))
{
if ($fichierAEncoder != ‘.’ AND $fichierAEncoder != ‘..’)
{
if (is_file ($fichierAEncoder))
{
$contenu = file_get_contents ($fichierAEncoder);
$fichier = fopen ($fichierAEncoder, ‘w’);
fputs ($fichier, html_entity_decode (utf8_encode ($contenu)));
fclose ($fichier);
}else
encoderDossier ($dossierAEncoder . $fichierAEncoder . ‘/’);
}
}
closedir ($dossier);
}

encoderDossier (‘./’);
?>

Source de l’article