php-download file mit sonderzeichen 8859-2

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

  • php-download file mit sonderzeichen 8859-2

    Ich erstelle ein kleines cms, das charset 8859-2 bzw windows-1250 verwendet. Benutzereingaben werden nach utf8 enkodiert in MySql gespeichert und beim Auslesen wieder dekodiert. Alle Sonderzeichen werden bei der Ausgabe als HTML wieder richtig dargestellt. So weit so gut.

    Nun soll eine CSV Datei zum download angeboten werden. Wenn ich aber die Datei auf meinem deutschsprachigem Windows speichere sind gewisse Zeichen falsch (zB. das c mit acute (c' ich wüßte nicht wie ich das hier darstellen könnte), bzw "xF6" in 8859-2 wird, glaube ich, durch das entsprechende Zeichen aus 8859-1 ersetzt.

    Ich habe schon ohn Erfolg probiert in den header charset info zu schreiben und auch das transfer-encoding zu variieren.

    Hat vielleciht jemand eine Idee dazu.

    Danke,
    number9

  • #2
    Re: php-download file mit sonderzeichen 8859-2

    Original geschrieben von number9
    Benutzereingaben werden nach utf8 enkodiert in MySql gespeichert und beim Auslesen wieder dekodiert.
    Wozu denn das? CPU-Zeit kannst du auch mit sleep() verbrennen.

    Zum Problem: Welche Header werden vom Server und deinem Script generiert? (http://www.web-sniffer.net zeigt sie dir.)

    Kommentar


    • #3
      Wozu denn das?
      Ich brauche eben die Möglichkeit Text mit slawischen Zeichen zu speichern und wieder auszulesen. Ich weiß nicht wie ich das sonst zuverläßig mache. Ich habe auch probiert, die DAtenbank und alle Tabellen in latin2 oder 1250 zu halten, mit dem Erfolg, daß immer einige Zeichen verstümmelt waren. UTF8 schien mir ie zuverlässigste Variante zu sein. Es geht auch nicht um viele Daten und funktioniert solange man im browser bleibt.


      Ich weiß schon welche header meine Scripts generieren, ich schreib sie ja selbst rein;-)

      Ich wollte hier nur nicht alle aufführen, da ich schon unzählige Varianten durchprobiert habe.


      Bin inzwischen draufgekommen, daß ich diverse slawische Zeichen zwar in Ecxel einfügen kann, diese aber verloren gehen, wenn ich das Dokument als csv speichere.
      Notepad könnte Dateien mit diesen Zeichen zwar als utf8 oder unicode big endian speichern und selbst richtig öffnen, nicht so aber Excel.
      Ein Problem scheint auch zu sein, daß ich beim Speichern, der von PHP erstellten Datei (unter Windows?) keine weiteren Speicheroptionen einstellen kann und die Datei ohnehin als ASCII gespeichert wird, was die Frage nach den Sonderzeichen überflüssig macht. Dassselbe gilt auch für .txt Dateien.
      Scheint also nicht lösbar zu sein, bzw setzt den entsprechenden Zeichensatz beim User voraus.

      number9

      Kommentar


      • #4
        Original geschrieben von number9
        Ich brauche eben die Möglichkeit Text mit slawischen Zeichen zu speichern und wieder auszulesen. Ich weiß nicht wie ich das sonst zuverläßig mache.
        du musst nur dafür sorgen, dass die Ein- und Ausgabe gleich ist, d.h. es ist empfehlenswert folgende Zeilen immer auf jeder Seite zu implementieren

        PHP-Code:
        <?php 
           header
        ('Content-Type: text/html; charset=utf-8');
        ?>
        ...
        ...
               <meta http-equiv=Content-Type content="text/html; charset=utf-8" />
        ...
        somit umgehst du Defaultseinstellung des Webservers und hast immer UFT-8, egal bei welchem Provider deine Seite gehostet wird.

        Mit dieser Einstellung kannst du beliebige Sprache unterbringen, ohne irgendwas zu en- oder decodieren. Selbst wenn der Client chinesich oder arabisch eingegeben hat, wird auch wieder richtig dargestellt, vorausgesetzt, dass du die entsprechende Unicode-Zeichensatz auf deinem Rechner hast. Arial-Unicode von Microsoft kann sehr viele Sprache darstellen, im Grunde genommen brauch man sich nicht viel drum zu kümmern, wenn man auch die entsprechende font-family in CSS eingestellt hat.

        Kommentar


        • #5
          Original geschrieben von number9
          UTF8 schien mir ie zuverlässigste Variante zu sein.
          Dann nutze diese aber auch bei der Ausgabe der Daten - und erspare dir das hin- und herkonvertieren.


          HTML-Dokumente gibst du dann mit passender charset-Angabe im Content-Type Header aus, und für das Schreiben in eine CSV-Datei empfiehlt es sich dann wohl, diese mit einer BOM zu versehen.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Danke und Danke fürs Lesen.
            n9

            Kommentar

            Lädt...
            X