5568 sujets

Sémantique web et HTML

Bonsoir.

Je vais encore faire appel à vos lumières !

Problématique : Problème d'affichage des caractères accentués malgré un encodage en iso-8859-1 ou en UTF-8

Test effectués et erreurs constatées :

PREMIER TEST

J'ai créé un fichier XML (via mon logiciel favoris) contenant diverses informations comme suit :

<?xml version="1.0" encoding="ISO-8859-15"?>
<icons>
<icon image="pictures/mon_image.png" action="http://www.mon-url.com" rel="shadowbox[gallery];options={counterType:'skip',continuous:true}" target="_self" titre="Mon titre" desc="Ma description avec des caractères accentués"/>
</icons>


Lorsque j'affiche ma galerie (puisque, vous vous en doutez, il s'agit d'un genre de galerie de photos), tout s'affiche correctement. Mes caractères accentués sont visibles.

DEUXIÈME TEST

Étant donné que j'ai de très nombreuses illustration à mettre et que ces illustrations sont classées par catégories, j'ai fait appel à une base de données MySQL (5.0 et même 4.0). Après maintes recherche sur Internet, j'ai finalement trouvé une solution pour générer un fichier XML (en PHP) Smiley lol Merveilleux, je me lance :

Je crée ma page galerie1.php

<?php require("connect.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php

// Edition du début du fichier XML
$xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
$xml .= "<icons>\n"; 

// Connexion a la base
@mysql_connect($host,$user,$pwd) or die("Connexion impossible");
@mysql_select_db($base) or die("Echec de selection de la base");

// Selection des éléments
$res=mysql_query("SELECT * FROM mabase WHERE macategorie = '1' ORDER BY ID DESC");

// Extraction des informations et ajout au contenu
while($tab=mysql_fetch_array($res)){   
	$title=$tab[title];
	$description=$tab[description];
	$url=$tab[url];
	$picture=$tab[picture];

	$xml .= "\n<icon image=\"pictures/".$picture."\" action=\"".$url."\" rel=\"shadowbox[gallery];options={counterType:'skip',continuous:true}\" target=\"_self\" titre=\"".$title."\" desc=\"".$description."\"/>\n";
}

// Edition de la fin du fichier XML
$xml .= "</icons>";

// Ecriture dans le fichier
$fp = fopen("galerie1.xml", 'w+');
fputs($fp, $xml);
fclose($fp);
@mysql_close();

?>
</body>
</html>


L'ouverture de ma page galerie1.php lance la création de mon fichier galerie1.xml

La page XML générée est parfaitement identique à celle créée à la main dans mon logiciel MIS A PART QUE, le résultat sur mon site n'est pas du tout le même ! Smiley sweatdrop En effet, TOUS les caractères accentués sont remplacés par de jolis petit carrés et mieux encore, les DEUX lettre suivant ce caractères accentué ont également disparues. Ex : Taïchi donne Ta[ ]i, Taïso donne Ta[ ], etc...

J'ai essayé de jouer avec l'encodage en me mettant en UTF-8 et je ne sais quoi encore... mais rien y fait !

Auriez-vous une solution à me proposer ? Je sèche complètement pour le coup ! Smiley confus

Merci par avance pour vos conseils éclairés Smiley confused
Modifié par nikkyken (09 Mar 2009 - 19:32)
Pffff !!! Quel idiot je fait !

J'ai omis quelque chose dans mon code PHP

// Extraction des informations et ajout au contenu
while($tab=mysql_fetch_array($res)){   
	$title=[b]utf8_encode([/b]$tab[title]);
	$description=[b]utf8_encode([/b]$tab[description]);
	$url=$tab[url];
	$picture=$tab[picture];

	$xml .= "\n<icon image=\"pictures/".$picture."\" action=\"".$url."\" rel=\"shadowbox[gallery];options={counterType:'skip',continuous:true}\" target=\"_self\" titre=\"".$title."\" desc=\"".$description."\"/>\n";


Et comme par miracle, ça fonctionne !

Je me confond donc en excuses pour vous avoir dérangé pour rien. Smiley biggol