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.
Ergebnis 1 bis 6 von 6
- 09.08.2010, 04:21 #1Finkenwerder 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:
Wenn ich ein Teil davon per echo(); aufrufe, wird dieses auch gut wiedergegeben.Code:// Zeichensatz von $_POST ändern function utf8_conv(&$item, $key){ // Wichtig: Die Referenz übergeben $item = utf8_decode($item); } array_walk_recursive($_POST, 'utf8_conv');
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.
- 09.08.2010, 07:39 #2MacBook Pro 15'' i7 2.2 GHz | MacBook Air 1.6 GHz | iPhone 4S |new iPad 3G | Mac Mini 2.4 GHz
- 09.08.2010, 12:13 #3Finkenwerder 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 AntwortMini-Leo
You can only take what you can carry.
- 13.08.2010, 00:55 #4Finkenwerder 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.
- 13.08.2010, 10:16 #5
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...
- 13.08.2010, 11:29 #6Finkenwerder 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.


Zitieren
ansonsten sollte dort utf8-encode stehen.


