Bonjour,

Je recupere des XML dont l'encodage est :
<?xml version="1.0" encoding="windows-1252"?>


Quand je produits du html avec xslt directement, l'affichage des caracteres accentués ne pose pas de problemes.

J'ai par contre besoin d'extraire un champ de ce XML, je passe par php via la fonction simplexml_load_file.
Les caractères accentués ne passent pas dans ce cas.

Mes pages sont avec l'entete suivante :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.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"/>


Si vous avez une idée, je séche un poil....

Merci,

:)

Exemple de caracteres via php :
 Résidence


[edit:ajout de l'exemple]
Modifié par brankgnol (06 Sep 2005 - 17:10)
Administrateur
Bonjour,

les fonctions XML ne supportent que US-ASCII, ISO-8859-1 et UTF-8 si j'en crois la doc http://fr.php.net/manual/fr/ref.xml.php , pour simpleXML ce n'est pas évoqué http://fr.php.net/manual/fr/ref.simplexml.php Smiley confus

Tu as fait le test avec d'autres encodages? Avec xsl:output ( http://www.xml.com/pub/a/2002/09/04/xslt.html ) et identity transformation, c'est rapide de tester un document ayant plusieurs encodages Smiley cligne


EDIT: j'ai oublié un paragraphe à ma réponse. Smiley baille Essaie avec utf8_encode/decode http://fr.php.net/manual/fr/function.utf8-encode.php sinon, comme me l'avait conseillé QuentinC dans le salon Encodage.
Dans la doc de utf8_encode http://fr.php.net/manual/fr/function.utf8-encode.php , il y a un message qui peut t'être utile si tu n'as à gérer QUE windows-1252 (cherche 1252, tu tomberas direct dessus)
Modifié par Felipe (06 Sep 2005 - 16:50)
Merci, y'avais effectivement un utf8_decode() à passer.

Je comprends pas forcément pourquoi, mais bon, ca marche Smiley smile .

Merci beaucoup!!! Smiley smile
>> Modérateurs : est-ce qu'il y a un moyen d'enlever 'résolu' ou me faut-il ouvrir un nouveau sujet ? <<

Tout d'abord, bravo pour le site Alsacréation, il est pour moi une référence qui m'a permi de me former correctement au monde du css, des normes, et tant d'autres...

Je me permet de déterrer ce topic car il est l'exacte situation dans laquelle je me trouve : un flux xml encodé en windows-1252 et une tentative de récupération avec simplexml de php.

Malheureusement la solution proposée ci dessus ne m'a donné aucun résultat positif...

Voici l'entête du xml :


<?xml version="1.0" encoding="windows-1254"?>
<fournisseur licence="###">
	<catalogue>
		<produits>
			<produit numero="1">


Voici mon bout de code :


$cp1252_map = array(...);

// Lecture et conversion du flux
$fluxXml = simplexml_load_file($xmlLocal) or die ('impossible de charger le fichier local '.$xmlLocal);
$fluxXml = strtr(utf8_encode($fluxXml), $cp1252_map);

?>

foreach($fluxXml->catalogue->produits->produit as $produit) {...


ce qui me donne, comme dans de nombreux cas avec tentative de conversion :


Warning: Invalid argument supplied for foreach() in C:\www\Intranet\import_marmara.php on line 98


en cas de non-conversion, j'obtient le même genre d'erreur de caractère que cité en sujet :
"les patrouilleurs anglais venaient s’y refugier et l’on retrouva..."
"C’est ici qu’Antoine et Cleopâtre..."



si quelqu'un a une petite idée, ou une question pour que je précise mon problème...
Merci d'avance !

Edit : ajout du xml
Modifié par darkendorf (31 Mar 2006 - 16:01)
Bonjour a tous,
Je suis super novice en matiere de php et j'ai un gros soucis j'aurais besoin de vos conseils eclairés.
J'ai un php qui gere ma page de contact (text de saisie) sur un site flash mais le probleme c'est qu'il n'encode pas les caracteres turc dans l'autoreply et dans l'email qui m'envoie les données laissées par les utilisateurs. Les caracteres turc se transforment en symboles ou groupes de caracteres (ce qui rend le texte du message illisible) et je n'arrive pas a trouver la solution.
Quelqu'un pourrait m'aider SVP? Smiley smile
Thanks

Voici mon bout de code:


<?php
#
$MailTo="lolycatz@noos.fr";

# fonction permettant l'encodage des caract?res accentuŽs
function getFormatedText($texte){
$texte =utf8_decode($texte);
$texte =eregi_replace( "\r", "\n", $texte);
$texte =stripcslashes($texte);
return $texte;
}
# fin de la fonction

# application de la function aux variables concernŽes

$firstname=getFormatedText($firstname);
$lastname=getFormatedText($lastname);
$Subject=getFormatedText($Subject);
$Body=getFormatedText($Body);

#
# Formating Date ############################################################
# ("m.d.Y"); pour passer au format europ&#142;en ("d.m.Y");
# Pour rajouter les heures de d&#142;calage horaire ,ajouter "time()+3600*(2+date("I")));" +2 heure d'&#142;t&#142; R&#142;union
$nowDay=date("d.m.Y");
$nowClock=date("H:i:s",time()+3600*(1+date("I")));
#
# Formating Body content ######################################################
#
$FormContent="
The following information has been received the $nowDay at $nowClock:\n\n
----------------------------------------------------------------------------\n
First Name: $Subject
Last Name: $lastname
E-mail: $MailFrom
----------------------------------------------------------------------------\n
Company: $firstname
----------------------------------------------------------------------------\n
Message: $Body
----------------------------------------------------------------------------\n
Telephone: $Phone
----------------------------------------------------------------------------\n
Fax: $Gsm
----------------------------------------------------------------------------\n

".urlencode(utf8_encode($FormContent));
#
#
mail($MailTo, "$Subject (Gulin Girismen Website - Contact Form from: $Subject - $lastname)", $FormContent, "From: $MailFrom");
#
#
# Autoresponder #############################################################
#
#
$filename = "answer.txt";
$fd = fopen( $filename, "r" );
$contents = fread( $fd, filesize( $filename ) );
fclose( $fd );
mail( "$MailFrom", "GULIN GIRISMEN - Thank you for your request on www.gulingirismen.com", "$contents\n\n", "From:aloysecauden@noos.fr\n" );
#
#
# Flashsignal Variable ######################################################
#
$signal=1;
echo "signal=$signal";
#
###############################################################################
?>