Bonjour à tous!
Je suis actuellement confronté à un petit soucis avec des caractères spéciaux. En fait je récupère des données de mon XML avec de l'AJAX et du PHP.
En AJAX, lorsque je fais appel à la fonction "innerHTML" tout est parfait. Par contre avec "document.write" les caractères accentués et spéciaux sont illisibles.
J'ai le même soucis quand je récupère ces informations avec PHP...

J'ai bien fait attention de noter la norme (ISO pour moi) dans mes documents HTML et XML.

Mais bon rien ne semble avoir d'effet sur cette malédiction lol.
Si quelqu'un a une petite idée, il est le bienvenue.

Merci
Bonjour,

Pourrais-tu poster un echantillon du XML et du HTML ?
Attention, le fait d'indiquer l'encodage dans la déclaration XML n'a pas d'impact sur l'encodage réel du fichier. Si tu utilises Latin1 comme encodage mais que le fichier XML est édité et sauvegardé en UTF-8, tu auras des surprises car le parser s'attendra à lire du latin1 et trouvera de l'UTF-8 qu'il affichera mal.
Voici une page html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" />
		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/design.css" />
		<title>Bienvenue sur l'intranet de la SODEDAT93</title>
		<script language=javascript src="js/recup_nom_date_dans_xml.js"></script>
		<script language=javascript src="js/ligne_de_texte_defilante_nom_date.js"></script>
		<script language=javascript src="js/ligne_de_texte_defilante_message.js"></script>
		<script language=javascript src="js/menu_tournant.js"></script>
		<script language=javascript src="js/infobulle.js"></script>
		<script language=javascript src="js/date.js"></script>
		<script language=javascript src="js/cookie.js"></script>
		<script language=javascript src="js/lireCookie.js"></script>
	</head>
	
	<body>
		<div id="banner">
			<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="640" height="120" id="titre" align="middle">
				<param name="allowScriptAccess" value="sameDomain" />
				<param name="movie" value="banniere.swf" />
				<param name="quality" value="high" />
				<param name="bgcolor" value="#ffffff" />
				<embed src="banniere.swf" quality="high" bgcolor="#ffffff" width="50px" height="150px" name="titre" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
			</object>
		</div>
		
		<div id="espace_perso">
			<h1> Bonjour <a id="admin" href="http://localhost/sodedat/index.html" onclick="ecrire_cook('admin');"><abbr title="Passer en mode administrateur"> Alain! </abbr></a> </h1>
			<p id="date_heure"> Nous sommes le : <b id="heure"></b> </p>
			<dt> 02/07/07 - Aujourd'hui : </dt>
			<dd> 4 document(s) modifié(s) - <a id="liste_documents_modifies" href="#"> [voir la liste] </a> </dd>
			<dd> dont 1 aujourd'hui </dd>
			<dt> 01/07/07 - Aujourd'hui : </dt>
			<dd> 0 nouveau(x) document(s) - <a id="liste_documents_nouveaux" href="#"> [voir la liste] </a> </dd>
			<dd> dont 1 aujourd'hui </dd>
		</div>
		
		<div id="news">
			<a id="ajouter_news" href="http://localhost/sodedat/ajouter_news.html"> [Ajouter une news] </a>
			<a id="voir_news" href="http://localhost/sodedat/toutes_les_news.php"> [Voir toutes les news] </a>
		</div>
		
		<div id="menu_tournant"></div>
		<div id="info_menu_tournant"></div>
		<div id="rubrique"></div>
	</body>
</html>


mon XML:

<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<actualite>
	<news>
		<id>1</id>
		<nom>Pierrick</nom>
		<titre>Coucou!ééé</titre>
		<date>02/07/2007</date>
		<heure>12:03:56</heure>
		<message>Bonjour et bienvenue a tous sur l'intranet de la Sodedat 93!héhé</message>
		<url>#</url>
	</news>
	<news>
		<id>2</id>
		<nom>Alain</nom>
		<titre>Voyons...</titre>
		<date>13/07/2007</date>
		<heure>11:58:01</heure>
		<message>Juste pour voir si ca fonctionne...</message>
		<url>#</url>
	</news>
</actualite>


J'espère vraiment que tu trouveras qqch qui cloche (même si j'ai la honte) parce que ça commence à ma saouler ce truc...
Merci de ton aide bni
A vue de nez, tout est correctement formaté. Faudrait maintenant voir les JS qui posent problème.

Question: pour le XML, tu utilises quel éditeur? Tu spécifies l'encodage lorsque tu sauvegardes ton fichier? (question saugrenue pour le latin1, souvent encodage par défaut, mais on ne sait jamais).
Je fais tout sous notepad++ et le codage se fait en ANSI...
Et sinon je préfère te donner le php, parce que c'est ce qui m'embête le plus (dans le javascript je crois vraiment que c'est la fonction utilisée qui produit le problème. Alors qu'en php, quelle que soit la fonction aucun accent ne s'affiche):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>Toutes l'actualité de la Sodedat 93!</title>
		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css/toutes_les_news.css" />
	</head>
	<body>
		<div id="menutop">
			<p> <a id="menutop_accueil" href="http://localhost/sodedat/index.html"><abbr title="Retour à la page d'accueil">Accueil</abbr></a> </p>
			<p> <input id="menutop_search_intranet" type="text" name="search_intranet" value="intranet"/> </p>
			<p> <input id="menutop_search_google" type="text" name="search_google" value="google"/> </p>
			<p> <a id="menutop_repondre" href="http://localhost/sodedat/ajouter_news.html"> Ajouter une news </a> </p>
		</div>
		
		<div id="toutes_les_news">
			<h1 id="news_title"> Toute l'actualité de la Sodedat 93! </h1>
<?php
				$dom = new DomDocument();
				$xmlObject = "XML/news.xml";
				$dom->load($xmlObject);
				
				$tagId = $dom->getElementsByTagName('id');
				$tagNom = $dom->getElementsByTagName('nom');
				$tagTitre = $dom->getElementsByTagName('titre');
				$tagDate = $dom->getElementsByTagName('date');
				$tagHeure = $dom->getElementsByTagName('heure');
				$tagMessage = $dom->getElementsByTagName('message');
				$tagURL = $dom->getElementsByTagName('url');
				
				for( $i=0 ; $i<$tagNom->length ; $i++ )
				{
					$id = $tagId->item($i)->nodeValue;
					$nom = $tagNom->item($i)->nodeValue;
					$titre = $tagTitre->item($i)->nodeValue;
					$date = $tagDate->item($i)->nodeValue;
					$heure = $tagHeure->item($i)->nodeValue;
					$message = $tagMessage->item($i)->nodeValue;
					$url = $tagURL->item($i)->nodeValue;
?>
				<div class="news">
					<div class="news_haut">
						<p class="news_titre"> <?php echo $nom ?> - <?php echo $titre ?> </p>
						<p class="news_date"> <?php echo $date ?> - <?php echo $heure ?> </p>
					</div>
					<div class="news_bas">
						<p class="news_message"> <?php echo $message ?> </p>
					</div>
<?php
					if( $_COOKIE["admin"] == 1 )
					{
?>
					<p>
						<a class="news_modifier" href="http://localhost/sodedat/formulaire_modifier_news.php?id=<?php echo $id ?>"> Modifier </a>
						- 
						<a class="news_supprimer" href="http://localhost/sodedat/supprimer_news.php?id=<?php echo $id ?>" onclick="return(confirm('Etes-vous sûr de vouloir supprimer ce message?'));">Supprimer</a>
					</p>
<?php
					}
?>
				</div>
<?php
				}
?>
		</div>
	</body>
</html>


Je te remercie beaucoup pour ton implication dans ce sujet.
Hmm...

Moi mon truc, c'est plutôt ASP, mais il doit bien y avoir un truc du genre Session.CodePage = 65001 en PHP.
En ASP, cela permet de préciser l'encodage du traitement coté serveur.

Attention 65001 c'est pour l'UTF-8. Pour l'ANSI, je crois que c'est 1252.

Tu peux faire un screenshot du résultat, pour que je me rende compte ? Je n'ai pas d'interpréteur PHP là où je me trouve
Salut,
voici un screen d'un morceau de la page générée par le script php que je t'ai donné:
upload/12862-problemeac.jpg

Concernant l'encodage côté serveur, je ne connaissais pas du tout donc je vais regarder ça...

Merci encore pour ton aide

<edit>
J'avais trouvé une petite fontion sympathique qui permet d'identifier l'encodage d'une chaîne:
http://www.tux-planet.fr/blog/?2007/04/23/149-lutter-contre-les-problemes-d-encodage-en-php[/url]
Le soucis c'est qu'en appliquant ça, je retrouve mes accents et caractères spéciaux, ok, mais des erreurs sont générées s'il n'y a pas de caractères spéciaux dans la chaîne...
</edit>
Modifié par arnaultp (03 Aug 2007 - 10:14)
Pour le moment j'ai trouvé une solution de remplacement:

http://www.asp-php.net/ressources/codes/PHP-Remplacer+les+caracteres+accentues.aspx
[/url]

Et j'ai aussi pu faire un petit test pour mieux localiser le problème. Dans mon php j'ai mis:

$titre = $tagTitre->item($i)->nodeValue."àèô";

au lieu de :

$titre = $tagTitre->item($i)->nodeValue;


Et le résultat me donne que seul les caractères accentués récupérés du XML ne s'affichent pas correctement...

Donc le script va m'aider à continuer de travailler, mais ça me chifonne quand même et j'aimerais vraiment trouver une vraie solution (ou au moins une explication)