Convertir un site TYPO3 en UTF-8
Posté le 29 octobre 2010 | Catégorie TYPO3, TypoScript
Si TYPO3 4.5 est prévu pour être 100% UTF-8, convertir un site existant avec un encodage latin vers l'UTF-8 n'est pas si évident. Pourtant les bénéfices sont nombreux, coté front-end comme back office... Terminées les requetes AJAX renvoyant (dans le meilleurs des cas) des caractères spéciaux illisibles !
Attention : Avant de toucher à quoi que ce soit : faire un backup de la base de données originale !
mysqldump -hlocalhost -udbuser -pdbpassword typo3db > typo3db-backup.sql
1. Modifier la structure de la base de données
Il faut passer l'interclassement des tables, des champs et celui de la base vers utf8_general_ci. Pour cela, télécharger le script db_utf8_fix.php de J. van Hemert.
Nb : Remerciements à Yann - Développeur TYPO3 - et Marc - Webdesigner - pour avoir trouvé ce script.
Placer le script dans le répertoire FILEADMIN et le lancer après avoir désactivé le mode simulation. Attention : il est recommandé de mettre en commentaire les lignes 97 à 107 (merci Marc !), sinon les caractères accentués risquent de casser... et là, plus de typoscript...
Nb : Si vous êtes sous linux, vous pouvez réaliser cette opération sans l'aide du script, en modifiant le dump directement en ligne de commande (voir les détails sur le wiki de TYPO3)
2. Réaliser un dump de la nouvelle base
La structure de la base est maintenant capable d'accueilir des données utf-8. Il faut encore l'exporter. Faire un dump de la base modifiée, le nommer typo3db-utf8structure par exemple
mysqldump -hlocalhost -udbuser -pdbpassword typo3db > typo3db-utf8structure.sql
Nb : Au passage, les dump de MySQL depuis la version 5 sont écrits au format utf-8 par défaut... Résultat : le dump et donc les données qu'il contient sont 100% utf-8.
3. Importer les modifications
Supprimer l'ancienne base, la recréer en specifiant bien le nouvel interclassement et le jeu de caractere adéquat, et y importer le dump utf-8
DROP database typo3db; CREATE DATABASE typo3db CHARACTER SET utf8 COLLATE utf8_general_ci; mysql typo3db < typo3db-utf8structure.sql -hlocalhost -udbuser -pdbpassword
4. Activer l'UTF-8 dans TYPO3
Il ne reste plus qu'à forcer l'utilisation de l'utf-8 par TYPO3. Cela se passe dans l'install tool, deux champs sont à modifier avec les valeurs suivantes
$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8'; $TYPO3_CONF_VARS['SYS']['setDBinit'] = SET NAMES 'UTF8';
5. Verification
C'est terminé. Vider le cache. Si tout s'est bien passé l'utf-8 fonctionne maintenant parfaitement. Si besoin modifier l'encodage des templates HTML.
Pour aller plus loin : Une page du wiki est réservée aux différentes méthodes