Convertir une base en UTF-8

Un article de EpistemaWiki.

Symptômes

  • Présence de caractères encodés é dans le PHPMyAdmin mais pas dans le LMS
  • Base en latin1 (interclassement latin1_swedish_ci)
  • Problème d'ordonnancement avec les caractères accentués
  • Absence de la ligne $GLOBALS['conf']['DatabaseCharset'] = 'utf8'; dans le conf.php

Procédure de correction

  • Exporter la base structure + données en cochant les "drop table"
  • Ouvrir le .sql avec TextPad
  • Replacer les occurrences de "DEFAULT CHARSET=latin1" par "DEFAULT CHARSET=utf8"
  • Replacer les occurrences de "DEFAULT CHARACTER SET latin1" par "DEFAULT CHARACTER SET utf8"
  • Enregistrer
  • Convertir le fichier en latin : iconv -f UTF-8 -t ISO-8859-1 dump.sql
  • Réimporter la base avec ce nouveau fichier
  • Ajouter la ligne dans le conf du LMS : $GLOBALS['conf']['DatabaseCharset'] = 'utf8';