mit fopen() ISO-8859-1-Datei erstellen, nicht ASCII

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mit fopen() ISO-8859-1-Datei erstellen, nicht ASCII

    Für ein RSS-Feed will ich XML-Code in eine Textdatei schreiben.

    PHP-Code:
    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

    Code:
    <?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:

    Code:
    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.

  • #2
    Re: mit fopen() ISO-8859-1-Datei erstellen, nicht ASCII

    Original geschrieben von amazed
    Oder liegt das Problem an anderer Stelle?
    ja. [color=gray]-> *verschieb*[/color]

    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.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      versuch mal sowas

      PHP-Code:
      <?php
      htmlentities
      (html_entity_decode('string'ENT_QUOTES'iso-8859-1'), ENT_QUOTES'iso-8859-1');
      ?>
      ohne garantie

      Kommentar


      • #4
        Original geschrieben von MoRtAlAn
        PHP-Code:
        <?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
        PHP-Code:
        $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
        PHP-Code:
        header ('Content-Type: text/xml; charset=iso-8859-1'); 
        machen. Aber wie ist das, wenn ich vom PHP-Skript eine XML-Datei schreiben lasse?

        Kommentar


        • #5
          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.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            beim webserver konfigurieren, vielleicht ja auch in der .htaccess mit
            Code:
            AddCharset iso-8859-1 .xml
            zur not bastel dir halt ne php-datei, die einen entsprechenden header sendet
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              schon mal versucht die Datei in Binärmodus zu schreiben: fopen (...,'wb');

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

              Kommentar


              • #8
                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.

                Kommentar

                Lädt...
                X