Fork me on GitHub

Rapport de message :*
 

Re: Problèmes de caractères

Titre du sujet : Re: Problèmes de caractères
par Anonyme sur 26/10/2009 23:28:42

b'soir

Ce souci tient à l'encodage des caractères :
• des fichiers de langue des modules et de Xoops
• des données insérées en base de données.

Selon l'archive de Xoops que tu as téléchargé, ton Xoops "cause" soit UTF8 soit ISO-8859-1. La différence, à part compliquer la vie des monteurs de site depuis Xoops 2.3+, tient à ce que :
• le premier est plus universel
• le second n'est pas obsolète pour autant, il convient parfaitement pour les sites qui n'ont pas vocation internationale (à ce que j'ai compris)


Pour résoudre ton souci, il faut tout d'abord que tu détermines l'encodage utilisé par ton Xoops. Et c'est pas si évident que cela puisque les informations sont à rechercher à deux endroits :
• les fichiers de langue : pour Xoops et ses modules, il y a des dossiers /language/french/ qui contiennent les traductions en français. Les "DEFINE" sont soit en ISO, soit en UTF8.
• la base de données : les données ont été insérées en utilisant UTF8 ou ISO.


Pour connaître avec certitude l'encodage des fichiers de traduction :
1. Ouvrir le fichier de langue avec Notepad++
2. Dérouler le menu Format
3. Si Encoder en UTF-8 (sans BOM) est sélectionné tu as affaire à un fichier encodé en UTF-8. Si l'option sélectionnée est Encoder en ANSI, l'encodage est ISO. Mais il y a une subtilité avec le "Faux UTF8" : en regardant de plus près le contenu des DEFINE, si tu vois que les caractères accentués ont été remplacés par des caractères html (par exemple é remplacé par & e a c u t e) la traduction fonctionnera pour un site en UTF8.

Pour connaître l'encodage de la base de données (désolé pour les personnes qui ont tout compris, le terme est certainement inapproprié), ce n'est pas aussi simple. Ta base de données peut en effet contenir un mixte de caractères accentués et de caractères html (notamment ceux insérés par le biais d'éditeurs wysiwyg tels que FCKeditor). Une simple consultation du contenu des tables ne va pas t'aider donc. Les infos utiles sont situées :
1. Dans phpmyadmin : si dans la colonne interclassement tu as utf8_general_ci, tes données sont prévues pour un affichage UTF8. Si à la place tu as latin1_swedish_ci, tes données sont prévues pour ISO.
2. Dans mainfile.php : une instruction define('XOOPS_DB_CHARSET', 'utf8'); ou define('XOOPS_DB_CHARSET', 'latin1'); permet selon ton choix d'insérer dans ta base des données pour un affichage UTF8 ou ISO.
3. Dans www/language/french/global.php tu as une instruction de langage define('_CHARSET', 'UTF-8'); ou define('_CHARSET', 'ISO-8859'1'); Elle indique à Xoops - si j'ai bien compris - quel type d'encodage est utilisé par ton site...


Bon, tu n'as rien compris ?! si cela peut te rassurer tu n'es pas le seul.

Ce qu'il faut que tu fasses :
• ne pas chercher à passer ton site en UTF8 si tu as bâti ton site il y a plusieurs mois (avant Xoops 2.3). Cela risquerait de te compliquer la tâche.
• vérifier la cohérence de toutes les instructions listées ci-dessus (instruction contenu dans mainfile.php et celle contenue à la fin de global.php, en veillant à ce qu'elle soit homogène pour les fichiers /english et /french même si ton site n'est pas bilingue)
• trouver les fichiers de langue pour tes modules adaptés à ton site : s'il est en ISO, il faut que les fichiers des modules soient en ISO sinon tu obtiendras l'affichage de caractères de remplacement illisibles. Si ton site est en UTF8, il faut que tu trouves les fichiers correspondants (regardes sur le sourceforge de frxoops, je crois que des traductions en "Faux UTF8" sont disponibles)


Je précise que je n'ai pas compris grand chose à tout ça. Mais tant qu'un expert n'aura pas pris le temps de faire une explication détaillée (par exemple : comment passer un site ISO en UTF8), il faudra te contenter d'éclaircissements confus
Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

88 Personne(s) en ligne (70 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 88 | Plus ...