Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
mit fopen() ISO-8859-1-Datei erstellen, nicht ASCII [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
mit fopen() ISO-8859-1-Datei erstellen, nicht ASCII


 
amazed
27-10-2004, 01:27 
 
Für ein RSS-Feed will ich XML-Code in eine Textdatei schreiben.

if ($fx=fopen($xml_pfad.$rss_20_datei_name,"rw")) {

flock($fx,2);
fputs($fx, $xml);
flock($fx,3);
fclose($fx);

}

Ich brauche eine ISO-8859-1-codierte Datei. Deshalb heisst die 1. Zeile der XML-Datei auch

<?xml version="1.0" encoding="ISO-8859-1" ?>

Das Problem ist, dass die Datei, die ich mit obigem Skript schreibe, dann ASCII-codiert ist, und nicht ISO-8859-1.

Der Feed Validator sagt:

Your feed appears to be encoded as "ISO-8859-1", but your server is reporting "US-ASCII"

Wie kann ich in PHP eine Datei schreiben, die ISO-8859-1-codiert ist? Oder liegt das Problem an anderer Stelle?

Danke schonmal. Maze.

 
wahsaga
27-10-2004, 08:33 
 
Original geschrieben von amazed
Oder liegt das Problem an anderer Stelle?
ja. -> *verschieb*

dein server liefert für die ressource den falschen content-type, oder vermutlich eher gar keinen - und dann wird als default nun mal us-ascii angenommen.

 
MoRtAlAn
27-10-2004, 09:48 
 
versuch mal sowas

<?php
htmlentities(html_entity_decode('string', ENT_QUOTES, 'iso-8859-1'), ENT_QUOTES, 'iso-8859-1');
?>

ohne garantie

 
amazed
27-10-2004, 12:43 
 
Original geschrieben von MoRtAlAn
<?php
htmlentities(html_entity_decode('string', ENT_QUOTES, 'iso-8859-1'), ENT_QUOTES, 'iso-8859-1');
?>


Du meinst, dass ich das in der PHP-Datei mache, die auch den XML-Code generiert? Ja, die Zeichen hab ich schon konvertiert. In der PHP-Datei eben, die die XML-Datei schreibt. Mit $xml = mb_convert_encoding ($xml, "ISO-8859-1", "Windows-1252"); Aber das ändert offensichtlich nicht die Codierung der Datei, die ich vom Skript schreiben lasse.

Original geschrieben von wahsaga
dein server liefert für die ressource den falschen content-type, oder vermutlich eher gar keinen - und dann wird als default nun mal us-ascii angenommen.

Ok. Kannst Du mir sagen, ob und wie man das ändern kann? Wenn ich eine PHP-Seite ausgebe, kann ich das ja mit header ('Content-Type: text/xml; charset=iso-8859-1'); machen. Aber wie ist das, wenn ich vom PHP-Skript eine XML-Datei schreiben lasse?

 
wahsaga
27-10-2004, 12:50 
 
Original geschrieben von amazed
Kannst Du mir sagen, ob und wie man das ändern kann?
du musst den webserver so konfigurieren, dass er entweder alle dateien mit der endung .xyz oder nur eine bestimmte mit dem namen abc.xyz mit dem von dir gewünschten content-type ausliefert.

schau ins handbuch deines webservers, oder frag seinen admin.

 
mrhappiness
27-10-2004, 12:50 
 
beim webserver konfigurieren, vielleicht ja auch in der .htaccess mitAddCharset iso-8859-1 .xml

zur not bastel dir halt ne php-datei, die einen entsprechenden header sendet

 
asp2php
27-10-2004, 13:00 
 
schon mal versucht die Datei in Binärmodus zu schreiben: fopen (...,'wb'); :dontknow:

oder ähnlich wie happy schon sagte: AddType text/xml;charset=iso-8859-1 .xml

 
amazed
29-10-2004, 23:21 
 
Ich habs aufgegeben und lasse den XML-Code jetzt direkt von einer PHP-Datei ausgeben. Das bringt Nachteile mit sich, ist aber einfacher. Trotzdem danke.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:37 Uhr.