problème d'encodage
Bonjour,
Suite au passage à la version 1.9, j'ai voulu passer mon site en UTF-8 ( je précise que la version de ma base [[MySql]] est en 4.1.9). Après m’être confronté aux problèmes récurrents d'incohérence entre l'affichage des accent dans phpMyAdmin et l'espace privé de Spip, j'ai pu résoudre le problème en 2 temps:
1 - Ajout d'un content-type dans le fichier ecrire/inc/présentation (Cf billet http://forum.spip.org/fr_184120.html?var_recherche=accent) afin d'afficher correctement les caractères de la base
2 – Ajout de l'instruction if($GLOBALS['meta']['charset']=="utf-8") { mysql_query("SET NAMES utf8"); } dans le fichier ecrire/base/db_mysql dans le fichier ecrire/base/db_mysql.php (ligne 231) afin que la base prenne réellement les caractères en UTF8
Cependant même après ces 2 manip j'ai encore des problèmes d'affichage d'accent dans un Flash qui reçoit les données de la base via un squelette qui joue le rôle d'interface entre le Flash et mysql. Ce squelette comporte bien les headers(php) et content-type(xhtml) en UTF8 mais les données (certaines du moins) ne semblent pas être au bon format pour l'envoie. En effet les problèmes apparaissent seulement lorsque le caractère accentué se trouve en 5ieme position sur une chaine et qu’il n’y a pas d’autres caractères spéciaux sur les 4 premiers, dans ce cas mes ‘é’ ressemble à des ‘é’ (comme si le flash interprétait de l’ISO
J’ai essayé de tester le format dans mon squelette avec la fonction is_utf8 (intégrée à spip) et selon le résultat les données sont passées en utf8 par un ‘utf8_encode’. Cela n’a pas résolu mon problème
Après avoir consulté plusieurs forum je suis tombé sur un billet introduisant la notion de BOM (Byte Order Mark) qui consiste en un marquage (pouvant être invisible) de l’encodage UTF8 en debut de fichier. La présence ou l’absence de ce marquage pourrait-elle gêner l’interprétation de la chaîne par le Flash ?
Si quelqu’un à une piste …
Merci !