Bonjour,
J'utilise Spip + une contrib pour jouer des MP3. Jusqu'à présent, tout se passait très bien : l'animation jouait les morceaux joints à un article et affichait leurs titres.
Dans sa nouvelle version, Spip passe enfin à utf-8. Très bien. Le malheur, c'est qu'alors l'anim' Flash ne lit plus bien les titres des morceaux.
Exemple
Je vais refaire ici le schéma de la contrib en tâchant d'être simple.
1) dans la page que l'internaute consulte, il y a ceci. J'ai laissé quelques références directes à Spip pour plus de simplicité ; la boucle va chercher les adresses et les titres des morceaux enregistrés par le rédacteur. Ce qui nous intéresse, c'est le PHP :
2) et puis il y a 2 autres fichiers :
- mp3player.xml, vide par défaut et dont le contenu est remplacé à chaque utilisation du player par un internaute
- mp3player.php, qui contient le code suivant :
Ma mission (et je l'accepte) est d'afficher correctement ces caractères. j'ai déjà fait pas mal de recherches à ce sujet, notamment :
- j'ai encodé mes fichiers en utf-8 sans BOM
- j'ai tenté les fonctions utf8_encode() et utf8_decode() sans succès
J'ai beaucoup lu et fait pas mal d'essais sans que cela corrige le problème.
Et en plus je ne peux pas toucher au .fla, dont je ne dispose pas...
J'utilise Spip + une contrib pour jouer des MP3. Jusqu'à présent, tout se passait très bien : l'animation jouait les morceaux joints à un article et affichait leurs titres.
Dans sa nouvelle version, Spip passe enfin à utf-8. Très bien. Le malheur, c'est qu'alors l'anim' Flash ne lit plus bien les titres des morceaux.
Exemple
Je vais refaire ici le schéma de la contrib en tâchant d'être simple.
1) dans la page que l'internaute consulte, il y a ceci. J'ai laissé quelques références directes à Spip pour plus de simplicité ; la boucle va chercher les adresses et les titres des morceaux enregistrés par le rédacteur. Ce qui nous intéresse, c'est le PHP :
<object type="application/x-shockwave-flash" data="mp3player.swf" width="280" height="280" bgcolor="#ffffff">
<param name="movie" value="mp3player.swf" />
<param name="bgcolor" value="#ffffff" />
</object>
<!-- Construction du fichier xml contenant liste des mp3 associe a l article -->
<?php $chemin1 = "mp3player.xml";
$fp = fopen ($chemin1, "w+");
$fp2="<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<player showDisplay=\"yes\" showPlaylist=\"yes\" autoStart=\"yes\">\n"; ?>
<BOUCLE_mp3(DOCUMENTS) {id_article} {mode=document} {par titre}>
<?php $urlDocPlayer='[(#URL_DOCUMENT|texte_script)]';
$titreDocPlayer='[(#TITRE|supprimer_numero|no_accent|texte_script)]';
$DescriptifDocPlayer='[- (#DESCRIPTIF|no_accent|texte_script)]';
$typeDocPlayer='[(#TYPE_DOCUMENT|texte_script)]';
if ($titreDocPlayer=="") $titreDocPlayer=$typeDocPlayer;
if ($typeDocPlayer=="MP3")
$fp2.=" <song path=\"$urlDocPlayer\" title=\"$titreDocPlayer $DescriptifDocPlayer\" />\n";
?>
</BOUCLE_mp3>
<?php
$fp2.="</player>";
$fp3 = fwrite ($fp, $fp2);
$p3 = fclose ($fp);
?>
2) et puis il y a 2 autres fichiers :
- mp3player.xml, vide par défaut et dont le contenu est remplacé à chaque utilisation du player par un internaute
- mp3player.php, qui contient le code suivant :
<?php
function readFileIntoBuffer( $filename )
{ @$fp = fopen( $filename, "r");
if ( $fp )
{ $val = fread( $fp, filesize( $filename ));
fclose( $fp );
return $val;
}
return false;
}
$liste=readFileIntoBuffer('mp3player.xml');
header("Pragma: no-cache");
header("Expires: 0");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, ");
echo "$liste";
?>
Ma mission (et je l'accepte) est d'afficher correctement ces caractères. j'ai déjà fait pas mal de recherches à ce sujet, notamment :
- j'ai encodé mes fichiers en utf-8 sans BOM
- j'ai tenté les fonctions utf8_encode() et utf8_decode() sans succès
J'ai beaucoup lu et fait pas mal d'essais sans que cela corrige le problème.
Et en plus je ne peux pas toucher au .fla, dont je ne dispose pas...