Problème d'encodage lors de l'insertion dans une base un xml

ludovicanceaux Messages postés 440 Date d'inscription mardi 21 octobre 2003 Statut Membre Dernière intervention 6 mai 2010 - 29 juin 2007 à 16:56
cs_citron27 Messages postés 1 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 13 juillet 2007 - 13 juil. 2007 à 09:18
Salut à tous,

je voudrais enregistrer dans ma base SQL des données qui viennent à la base d'un fichier XML, seulement comme bcp de gens j'ai des problème d'encodage j'ai parcouru pleins de forum avant de poster, j'ai tout testé, header(...), specialchar, htmlentites etc... rien y fait, en fait mon fichier est de ce style
<?xml version= "1.0" encoding="UTF8" ?>
<FMPDSORESULT>
<ROW MODID="7" RECORDID="77851">
<Categorie>Smart</Categorie>
<Couleur>Noir</Couleur>
<Kilom>0</Kilom>
Tissus noir
<Marque>Smart</Marque>
<Mill>2007</Mill>
<Note_fiche>Pk audio,Horloge+compte tours </Note_fiche>
<nom>
<DATA>smartfortwoA.JPG</DATA>
</nom>
<Num_Voiture>5593</Num_Voiture>
<Modele>Fortwo Coupé Passion 71 ch</Modele>
13 000 EUR

</ROW>

</FMPDSORESULT>

et mon extraction se fait de ce style:
if(file_exists($file)){
$xml =simplexml_load_file($file);
foreach($xml->ROW as $row){
$date=date("F d Y H:i:s", filemtime($file));
$num_voiture=$row->Num_Voiture;
$categorie=htmlspecialchars($row->Categorie, ENT_QUOTES);
$couleur=html_entity_decode($row->Couleur, ENT_QUOTES);
$kilometrage=$row->Kilom;
$interieur=html_entity_decode($row->Interieur, ENT_QUOTES);
$marque=str_replace('é','&eacute;',$row->Marque);
$millesime=$row->Mill;
$options=html_entity_decode($row->Note_fiche, ENT_QUOTES);
$modele=html_entity_decode($row->Modele, ENT_QUOTES);
$prix_ttc=$row->Prix;
$photo='';
foreach($row->nom->children() as $array_photo) {
if($photo!=''){$photo.='|';}
$photo.=$array_photo;
}
if($categorie==''){$categorie='Non communiqu&eacute;';}
if($marque==''){$marque='Non communiqu&eacute;';}
if($millesime==''){$millesime='Non communiqu&eacute;';}
if($kilometrage==''){$kilometrage='Non communiqu&eacute;';}
if($couleur==''){$couleur='Non communiqu&eacute;';}
if($interieur==''){$interieur='Non communiqu&eacute;';}
if($options==''){$options='Non communiqu&eacute;';}
if($prix_ttc=='&euro;'){$prix_ttc='[index.php?page=contact Nous consulter]';}
//Insert les données trouvées dans le XML dans la bdd
$sql="INSERT INTO `showroom` values('','$date','$num_voiture','$categorie','$marque','$modele','$millesime','$kilometrage','$couleur','$interieur','$options','$prix_ttc','$photo','false')";
mysql_query($sql)or die('Erreur SQL !'.$sql.''.mysql_error());
}}

comme dans l'exemple présenté j'ai tout testé, j'ai même testé de faire un replace, enfin c plutot la galère

Merci d'avance

1 réponse

cs_citron27 Messages postés 1 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 13 juillet 2007
13 juil. 2007 à 09:18
Bonjour,

je rencontre également le même soucis


en C#, j'essaye de mettre ce XmlDocument "<?xml version="1.0" encoding="UTF-8"?><test></test>" dans un champ de type xml sur un serveur SQL express 2005




et j'obtiens une exception "Analyse XML : ligne 1, caractère 38, impossible de modifier le codage"

Merci
0
Rejoignez-nous