[php] xml bestand genereren met fopen en fwrite -> fout

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een vreemd probleem om xml-bestanden te schrijven op de server.

Als ik het bestand http://www.w3schools.com/xml/note_encode_utf8_u.xml open in Internet Explorer 6 of FireFox 1.5, dan wordt het bestand keurig weergegeven.
Als ik het bestand download en upload naar mijn eigen server, dan wordt het bestand ook keurig weergegeven in beide browser.

Maar ik wil dus zelf een xml bestand genereren en daarom testte ik met de volgende code:
(De directory heeft de juiste rechten en het bestand wordt ook gegenereerd):
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$fp = @fopen("ftp://user:pwd@ftp.blaat.nl/export.xml", "w");
if(!$fp) {
    die('Error cannot create XML file');
}
fwrite($fp,'<?xml version="1.0" encoding="UTF-8"?>
<!-- Edited with XML Spy v4.2 -->
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Norwegian: æøå. French: êèé</body>
</note>');
fclose($fp);


Maar als ik dan export.xml open in IE krijg ik een foutmelding:
De XML-pagina kan niet worden weergegeven
Kan XML-invoer niet lezen met opmaakmodel XSL. Herstel de fout en klik vervolgens op de knop Vernieuwen of probeer het later opnieuw.

--------------------------------------------------------------------------------
Er is een ongeldig teken gevonden in de tekstinhoud. Fout bij het verwerken van bron http://www.woondossier.nl/export/expor...

<body>Norwegian:
En in FireFox worden de vreemde tekentjes niet herkend en vervangen door vierkantje met vraagtekens erin: ���. French: ���

Ik begrijp hier werkelijk niets van!
Kan iemand mij wellicht uitleggen wat er fout gaat / wat ik fout doe?
Kan dit aan server instellingen liggen?

Acties:
  • 0 Henk 'm!

Verwijderd

<body>Norwegian: æøå. French: êèé</body>
Komt het niet door die regel :?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ja daar komt het idd door, lijkt me duidelijk...

Maar als je even op het linkje klikt van w3schools, dan zie je dat de xml gewoon getoond wordt daar MET die regel ... het juist DE bedoeling dat die regel weergegeven wordt.

Aangezien ik in mijn eigen xml bestand straks ook teksten krijg met die tekens.
Daarom moet ik het werkend krijgen net als op w3schools.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heb het nu even bij mijn eigen provider geprobeerd en ook daar werkt het NIET!

Als ik in Dreamweaver een nieuw bestand maak en dan voor een XML bestand kies, de code van w3schools erin plak en upload, dan werkt het wel.

Maar dus niet met mijn scriptje.

Zou iemand eens dat willen testen op zijn / haar server?
Het lijkt wel of er een verkeerd 'soort' bestand wordt aangemaakt.
Volgens mij is het echt gewoon een flat textfile die ik met het script aanmaak.

Eindelijk ff in alle rust kunnen kijken ipv dat gekkenhuis om me heen op het werk.
En heb bij toeval de oplossing gevonden:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$f = fopen('test.xml','wt');
if($f){
    fwrite($f, utf8_encode('<?xml version="1.0" encoding="UTF-8"?>
<!-- Edited with XML Spy v4.2 -->
<note>
    <to>Tove</to>
    <from>Jani</from>
    <heading>Reminder</heading>
    <body>Norwegian: æøå. French: êèé</body>
</note>'));
    fclose($f);
}
?>


utf8_encode is dus de oplossing ...

Maar dat verklaart nog niet waarom een bestand aangemaakt in Windows via notepad niet werkt.

[ Voor 39% gewijzigd door Verwijderd op 25-01-2006 20:30 ]