Ergebnis 1 bis 6 von 6
  1. #1
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463

    fwrite(); & Umlaute

    Liebe -Talker.

    Wieder einmal stehe ich mit dem Rücken an der Wand.
    Zum Thema habe ich schon alle Tips aus dem Internet ausprobiert… Doch nichts funktioniert.

    Ich habe ein kleines Formular, welches die Eingaben in einer Textdatei auf dem Server ablegt.
    Zur Hilfe habe ich mir ein kleines Script-Snippet gebastelt, welches mir mein komplettes $_POST array in UTF-8 umschreibt:

    Code:
    // Zeichensatz von $_POST ändern
    function utf8_conv(&$item, $key){ // Wichtig: Die Referenz übergeben
      $item = utf8_decode($item);
    }
    array_walk_recursive($_POST, 'utf8_conv');
    Wenn ich ein Teil davon per echo(); aufrufe, wird dieses auch gut wiedergegeben.
    Das heißt, dass beim Speicher-Script alle Eingaben richtig ankommen.
    Das Script erstellt eine TXT-Datei und speichert per fwrite(); alles hinein. Allerdings kommt dort wieder ein anderer Zeichensatz an.
    Die Umlaute werden dort falsch dargestellt.

    Kann ich irgendwie dem fwrite(); sagen, welcher Zeichensatz beim schreiben verwendet werden soll? Oder wird die Datei falsch angelegt?


    Vielen Dank für Hilfe.
    Mini-Leo

    You can only take what you can carry.

  2. #2
    Pomme Etrangle Avatar von hillepille
    Registriert
    07.2009
    Ort
    Marburg
    Beiträge
    911
    hi, vorweg soweit mir bekannt ist kann php < 6.0 utf-8 als kodierung bei dateien nicht wirklich schreiben, also die kodierung der datei ist nicht utf-8 sondern iso-85...! und ääh, die funktion oben dekodiert daten, die in UTF-8 sind NACH ISO-8859-1 und nicht umgekehrt. ansonsten sollte dort utf8-encode stehen.
    du könntest entweder die $_POST-vars vor ausgabe schon ins die txt-datei schreiben oder in ein temporäres Array sichern und das dann in die TXT-Datei schreiben, oder du wandelst die vorher in utf-8 umgewandelten Vars (wenns denn so ist) ins entsprechende format. das geht rückwärts z.b. mit utf8-decode oder auch mit iconv, was ich für besser halte.
    MacBook Pro 15'' i7 2.2 GHz | MacBook Air 1.6 GHz | iPhone 4S |new iPad 3G | Mac Mini 2.4 GHz

  3. #3
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463
    Also. Das Problem ist, dass die Zeichen (Umlaute) nicht richtig dargestellt wurden und auch nicht werden. Seit ich die Funktion oben mit eingebaut habe, werden sie wenigstens per echo(); so dargestellt, wie ich das will.

    Jetzt bleibt nur noch die Frage offen, wieso die Zeichen, die ja offensichtlich richtig im Array stehen (per echo(); getestet), nicht richtig in die Datei geschrieben werden können.


    Danke für Deine Antwort
    Mini-Leo

    You can only take what you can carry.

  4. #4
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463
    Habe jetzt schon was Neues.
    Wenn ich die Datei mit Safari öffne, stimmt alles!

    Mit TextEdit gehts leider noch nicht.
    Mini-Leo

    You can only take what you can carry.

  5. #5
    Englischer Kantapfel Avatar von _linx_
    Registriert
    01.2009
    Alter
    19
    Beiträge
    1.086
    Das liegt daran, dass Safari den Zeichencode erkennt und korrekt darstellt. TextEdit kannst du aber keinen Zeichenvode angeben und es behandelt txt-Dateien als ISO-irgendwas, das keine Umlaute unterstüzt...

  6. #6
    Finkenwerder Herbstprinz
    Themenstarter

    Registriert
    03.2008
    Ort
    Berlin, Germany, Germany
    Beiträge
    463
    Dabei kommt es ganz darauf an, ob man in den TextEdit Einstellungen einen Zeichensatz festlegt, oder diesen automatisch erkennen lässt…
    Mini-Leo

    You can only take what you can carry.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •