Code de caractère

Un article de OviWiki.

A partir de la version 6.7.92 il est est possible d'installer Ovidentia en UTF-8. Dans le programme d'installation, une liste déroulante permet de choisir entre l'encodage latin1 ou utf8.

Changer l'encodage

Quand on dispose déjà d'une installation existante d'Ovidentia avec une version plus ancienne, l'encodage de la base de donnés et du HTML est latin1 (ISO-8859-15). Pour utiliser Ovidentia en UTF-8, il est préférable de partir d'une nouvelle installation car la conversion du contenu peut poser problème dans certains cas notamment au niveau des fichiers enregistrées sur le disque dur.

Néanmoins, il est possible de migrer la base de donnés de latin1 vers utf8 à l'aide d'un script intégré dans Ovidentia. Les éléments traités par ce script sont :

  • La base de donnés
  • Les fichiers du gestionnaire de fichier (en option)

Les éléments risquant de poser problème sont :

  • les fichiers joints aux posts de forum
  • les fichiers joints aux articles
  • Les modules complémentaires


Lors de la conversion de la base de données, toutes les tables sont converties. Si la base utilisée par Ovidentia contiens des tables qui ne doivent pas êtres converties, il faudra les réimporter après la converion ou convertir toutes les tables à la main.

Pour lancer le programmer il faut utiliser l'url suivante : http://example.com/index.php?tg=charset

Rendre compatible un module existant

Par défaut, la nouvelle version va considérer qu'un modules n'est compatible qu'avec une base de donnés en latin1 donc sur une base en UTF-8, le modules cessera de fonctionner. Dans le fichier addonini du module, il est possible de spécifier avec quel encodage de la base le module est compatible :

; le module peut fonctionner en latin1 ou en utf8
mysql_character_set_database="latin1,utf8"

la ou les valeurs de mysql_character_set_database doivent suivre la règle de nommage des encodage de MySql.

Avant d'autoriser le module dans plusieurs encodages, il est du devoir du developpeur de s'assurer que le module est bien compatible. Pour cela, il faut utiliser la librairie mbstring de php. Le paramétrage de mbstring est déjà effectué dans le noyau d'Ovidentia, il suffi d'appeler les fonctions à la place des fonctions standard de PHP.


Pour s'assurer que les nouvelles fonctions (notamment mb_string) sont bien présentes, il est nécessaire d'actualiser la version minimum d'Ovidentia requise pour le bon fonctionnement du module:

ov_version="6.7.92"


Si le fichier addonini doit contenir des caractères spéciaux, il est possible de modifier son encodage mais il faut le préciser à l'aide du paramètre encoding

encoding="UTF-8"

La valeur du paramètre encoding doit suivre la norme ISO (UTF-8, ISO-8859-15 ...)

Rendre compatible un skin

Ajouter sous la balise head du fichier page.html :

<meta http-equiv="Content-type" content="{ sContent }" />

qui sera remplacé par le html suivant :

<meta http-equiv="Content-type" content="text/html; charset=ISO-8859-15" />

ou

<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />