29-07-2008, 10:03 PM
Il est vrai que la conversion d'un site ISO vers UTF8 est assez contraignante car rébarbative.
Commencons par les fichiers, tu as 2 solutions, la manuelle, ouvrir chaque fichier et modifier leur encodage ou l'automatique en utilisant l'extension PHP prévu à cet effet soit inconv, attention il faut être sûr de l'encodage employé.
Pour ceci je te conseil la solution manuelle car de toute manière tu vas être obligé de modifier quelques fonctions native comme strlen, ereg, ereg_replace, etc; je te rassure d'avance, il y a très peu de fonctions à modifier, principalement celle traitant les chaînes; car elles sont basées sur l'encodage ISO. Il faudra faire précéder chacune d'entre elles par mb_ (mb signifiant multibyte) soit mb_strlen, mb_ereg, mb_ereg_replace.
N'oublie pas non plus de choisir UTF-8 sans BOM et sans Signature, ces deux encodages ajoutent des caractères invisible cela aura pour résultat l'apparition de header already sent.
Ensuite pour la base de données, je te conseille de configurer ta base, tes tables et tes champs en utf8_unicode_ci. Je déconseille la sensibilité à la casse car c'est bien plus contraignant; mais tu peux tout de même le faire, c'est toi qui choisis.
Attention, bien que la configuration de tout ceci soit en UTF-8, MySQL te renverra tout de même de l'ISO car le connecteur PHP <--> MySQL travaille en ISO, il faudra faire suivre chacune de tes connexions par une requête SQL, soit : SET NAMES UTF8.
Pour PHP, il faut activer obligatoirement l'extension mbstring et la configurer correctemment. Evite toutefois d'activer func_overload, tu auras d'une part une perte de performance et d'autre part quelques incompatibilités.
Enfin, Il faut configurer également Apache en UTF-8, en lui ajoutant dans httpd.conf la directive AddDefaultCharset UTF-8.
Pour finir, je te renvoie vers ce site qui détail agréablement la démarche à suivre.
Commencons par les fichiers, tu as 2 solutions, la manuelle, ouvrir chaque fichier et modifier leur encodage ou l'automatique en utilisant l'extension PHP prévu à cet effet soit inconv, attention il faut être sûr de l'encodage employé.
Pour ceci je te conseil la solution manuelle car de toute manière tu vas être obligé de modifier quelques fonctions native comme strlen, ereg, ereg_replace, etc; je te rassure d'avance, il y a très peu de fonctions à modifier, principalement celle traitant les chaînes; car elles sont basées sur l'encodage ISO. Il faudra faire précéder chacune d'entre elles par mb_ (mb signifiant multibyte) soit mb_strlen, mb_ereg, mb_ereg_replace.
N'oublie pas non plus de choisir UTF-8 sans BOM et sans Signature, ces deux encodages ajoutent des caractères invisible cela aura pour résultat l'apparition de header already sent.
Ensuite pour la base de données, je te conseille de configurer ta base, tes tables et tes champs en utf8_unicode_ci. Je déconseille la sensibilité à la casse car c'est bien plus contraignant; mais tu peux tout de même le faire, c'est toi qui choisis.
Attention, bien que la configuration de tout ceci soit en UTF-8, MySQL te renverra tout de même de l'ISO car le connecteur PHP <--> MySQL travaille en ISO, il faudra faire suivre chacune de tes connexions par une requête SQL, soit : SET NAMES UTF8.
Pour PHP, il faut activer obligatoirement l'extension mbstring et la configurer correctemment. Evite toutefois d'activer func_overload, tu auras d'une part une perte de performance et d'autre part quelques incompatibilités.
Enfin, Il faut configurer également Apache en UTF-8, en lui ajoutant dans httpd.conf la directive AddDefaultCharset UTF-8.
Pour finir, je te renvoie vers ce site qui détail agréablement la démarche à suivre.