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 (‘./’); |