Darstellung von Umlauten mit PHP Script nur teilweise korrekt ...

wunderbar

Mitglied
Thread Starter
Dabei seit
22.11.2004
Beiträge
34
Reaktionspunkte
0
Hallo liebe Gemeinde,
auch ich habe auf einer Flash-Homepage ein E-mail Formular eingebaut.
Der Versand und die Formatierung wird über ein PHP-Script gesteuert-
wobei der Versender ebenfalls eine Bestätigungs E-mail erhält.

Mein Problem:
"Nur" in der Bestätigungs E-mail werden die Umlaute nicht korrekt dargestellt.
(Meine Angaben für die Codierung sind in den beiden vorletzten Zeilen zu finden.)

Habe schon diverse Möglichkeiten getestet- aber leider ohne Erfolg. Vielleicht
hat jemand Lust mir etwas unter die Arme zu greifen.

Vielen Dank, beste Grüße
andreas

Der Code ist folgender:
PHP:
<?php

if($flash==ok) {
$gesendet="Deine Nachricht wurde gesendet. Viel Glueck!";
$symbol="*";
$ip=$REMOTE_ADDR;
$datum = date("d.m.Y - H:i");

$suchen = "\r";      
$ersetzen = "\n";
$kinder = str_replace($suchen,$ersetzen,$kinder);
$internet = str_replace($suchen,$ersetzen,$internet);
$neugierig = str_replace($suchen,$ersetzen,$neugierig);
$durchsetzen = str_replace($suchen,$ersetzen,$durchsetzen);
$erwachsene = str_replace($suchen,$ersetzen,$erwachsene);
$richtig = str_replace($suchen,$ersetzen,$richtig);
$langweilig = str_replace($suchen,$ersetzen,$langweilig);
$ernst = str_replace($suchen,$ersetzen,$ernst);
$interessant = str_replace($suchen,$ersetzen,$interessant);
$cool = str_replace($suchen,$ersetzen,$cool);
$helfen = str_replace($suchen,$ersetzen,$helfen);
$tiere = str_replace($suchen,$ersetzen,$tiere);

mail("$empfaenger1","Kinderleicht-Gewinnspiel$betreff",



"KINDER
$kinder


INTERNET 
$internet


NEUGIERIG
$neugierig


DUCHSETZEN
$durchsetzen


ERWACHSENE
$erwachsene


RICHTIG
$richtig


LANGWEILIG
$langweilig


ERNST
$ernst


INTERESSANT
$interessant


COOL
$cool


HELFEN
$helfen


TIERE
$tiere




//-----------------------------------------------------//
IP: $ip, des Senders
Datum und Zeit: $datum
//-----------------------------------------------------//",

"From: $absender <$absemail>");


// **** Hier folgt der Code für die Bestätigungs E-mail **** Hier werden 
// die Umlaute nicht korrekt dargestellt ****

$auto_reply = "Liebe[r] " .$absender.", \n\nvielen Dank f¸r deine Nachricht! Dies ist eine automatisch gesendete Best‰tigungs e-Mail.\n\n";

$auto_reply .= "Deine e-Mail, die du ¸ber unsere Webseite abgeschickt hattest, ist erfolgreich bei 
KINDERLEICHT eingegangen. Jetzt nimmst du an unserer Verlosung teil.\n\n\n";
$auto_reply .= "Hier kannst Du noch einmal Deine Antworten auf unsere Fragen nachlesen:\n";
$auto_reply .= "
KINDER:
Wie unterscheiden sich Kinder von Erwachsenen? Wie gehen Erwachsene mit Kindern um?
$kinder\n\nINTERNET:
Wie oft benutzt du das Internet? Was magst du am Internet? Was machst du besonders oft,wenn du im Internet bist?
$internet\n\nNEUGIERIG:
Was macht dich neugierig? Kennst du Menschen, die besonders neugierig sind?
$neugierig\n\nDURCHSETZEN:
Was tust du,wenn du dich einmal gegen andere durchsetzen musst? Wie machst du das?
$durchsetzen\n\nERWACHSENE:
Sind Erwachsene anders als Kinder oder sind die Unterschiede gar nicht so gross? Welche Erwachsenen magst du besonders gern? 
$erwachsene\n\nRICHTIG:
Wann hast du das letzte Mal etwas ganz Schwieriges richtig gemacht? Wie gehen andere damit um,wenn sie etwas falsch machen?
$richtig\n\nLANGWEILIG:
Was findest du richtig langweilig? Was ist langweilig in der Schule oder zu Hause?
$langweilig\n\nERNST:
Welche Menschen um dich herum sind besonders ernst? Warum sind sie so ernst? Was kann man tun,damit sie ˆfter lachen?
$ernst\n\nINTERESSANT:
Was interessiert dich besonders? Welche Dinge in der Schule findest du besonders interessant?
$interessant\n\nCOOL:
Was bedeutet es,wenn jemand cool ist? Warum wollen viele Leute gern cool sein? Wen findest du cool?
$cool\n\nHELFEN:
Gibt es Menschen,die nie Hilfe brauchen oder braucht jeder irgendwann jemanden,der ihm hilft? Nenne Beispiele.
$helfen\n\nTIERE:
Welches ist dein Lieblingstier? Kann man es streicheln oder ist das keine so gute Idee? 
$tiere\n\n\n";

$auto_reply .= "Die Gewinner werden nach den Herbstferien auf unserer Webseite bekanntgegeben.\n\nWir w¸nschen dir schˆne Ferien.\nDEIN KINDERLEICHT-Team\n\n\nhttp://www.xxxxx.de\n";

mail("$absemail", "Best‰tigungsmail Kinderleicht-Gewinnspiel", $auto_reply, "From: $empfaenger1");

// **** HTML-Mail senden, "Content-type" -Header. setzen ****
$headers* = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//$headers .= "Content-Transfer-Encoding: 8bit\r\n";

echo "&status=$gesendet";
echo "&symbol=$symbol";

}
?>
 
...daß die Umlaute schon in Deinem geposteten Codinf fehlen ist Dir aufgefallen?
Von der Formatierung her (iso-Tag) ist das eigentlich OK...
??
 
Hi wunderbar,

vielleicht direkt im Code:

statt Ü = &Uuml;
statt ü = &uuml;
statt Ä = &Auml;
statt ä = &auml;
statt Ö = &Ouml;
statt ö = &ouml;

schreiben?

Salü,
mactrisha.
 
PHP:
...
mail("$absemail", "Best‰tigungsmail Kinderleicht-Gewinnspiel",
$auto_reply, "From: $empfaenger1"); 

// **** HTML-Mail senden, "Content-type" -Header. setzen **** 
$headers* = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
//$headers .= "Content-Transfer-Encoding: 8bit\r\n";
Wie soll die Tatsache, dass Du nach dem Versenden der Mail Variablen definierst, die Mail beeinflussen?
Im Übrigen ist mir aufgefallen, dass in $auto_reply die Umlaute bereits zerhauen sind.
falkgottschalk schrieb:
...
Von der Formatierung her (iso-Tag) ist das eigentlich OK...
.. außer, dass die Header nicht in das mail() Kommando einbezogen sind

HTH
 
Zuletzt bearbeitet:
Vielen Dank für die raschen Anregungen,

/maceis

Es werden zwei E-Mails versand,
die 1. an $empfaenger1,
die 2. an $absemail (die Bestätigung für den jenigen, der das Formular ausgefüllt hat)
... wie soll die Tatsache, dass Du nach dem Versenden der Mail Variablen definierst, die Mail beeinflussen ...
PHP:
<?php
if($flash==ok) {
$headers* = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$gesendet="Deine Nachricht wurde gesendet. Viel Glueck!";
$symbol="*";
$ip=$REMOTE_ADDR;
$datum = date("d.m.Y - H:i");
...
Jup, habe die beiden Header-Zeilen nach oben gesetzt. Doch leider: Wie schon vorhin beschrieben,
lediglich in der mail an $empfaenger1 werden die Umlaute korrekt dargestellt.

Im Übrigen ist mir aufgefallen, dass in $auto_reply die Umlaute bereits zerhauen sind.
Das verstehe ich leider nicht.
 
falkgottschalk schrieb:
Von der Formatierung her (iso-Tag) ist das eigentlich OK...
Hm,
dann habe ich scheinbar in meinem Code grundsätzlich etwas falsch geschrieben?!?
Das Problem bei meiner Datei ist, dass lediglich in der Bestätigungs
e-Mail für den jenigen, der das Formular ausgefüllt hat die Umlaute
nicht korrekt dargestellt werden.
...daß die Umlaute schon in Deinem geposteten Codinf fehlen ist Dir aufgefallen?
... leider nein ... bzw. eventuell doch, Du meinst zum Beispiel hier das "f¸r" in
PHP:
$auto_reply = "Liebe[r] " .$absender.", \n\nvielen Dank f¸r deine Nachricht! Dies ...
Ich hatte vorher noch gar keine Formatierung angegeben ...
 
maceis schrieb:
.. außer, dass die Header nicht in das mail() Kommando einbezogen sind

HTH
oups ... das hat man davon, wenn man da nur mal schnell reinschaut.
Also auf so eine Idee muss man ja auch erst mal kommen ERST mail() aufzurufen und danach die header zu definieren.
Kuchen backen, Eier vergessen, die dann nach dem Backen drauflegen. Psst. merkt schon keiner..

mea maxima culpa...
 
@wunderbar

a) ERST Header definieren, DANN bei MAIL() einbauen, dann klappt's auch mit Charset.
b) wie weiter oben geschrieben "richtige" Umlaute verwenden => statt Ü = &Uuml; usw.
 
Hier die Syntax für das mail Kommando:
PHP:
bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]] )
Das würde dann so aussehen:
PHP:
...
$auto_reply = "Text mit ä ü ö und ß" ;
$subject = "Bestätigungsmail Kinderleicht-Gewinnspiel";
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: $empfaenger1\r\n"
mail($absemail, $subject, $auto_reply, $headers);
...
Mit den zerhauenen Umlauten meinte ich, das bereits in Deinem "$auto_reply = ..." die Umlaute nicht richtig dargestellt werden.

HTH
 
Zuletzt bearbeitet:
falkgottschalk schrieb:
...
Also auf so eine Idee muss man ja auch erst mal kommen ERST mail() aufzurufen und danach die header zu definieren.
Kuchen backen, Eier vergessen, die dann nach dem Backen drauflegen. Psst. merkt schon keiner..
Er hat sie doch nicht mal nach dem Backen draufgelegt, er hat sie nur nach dem Backen in die Schüssel geschlagen *lol*

falkgottschalk schrieb:
...
b) wie weiter oben geschrieben "richtige" Umlaute verwenden => statt Ü = &Uuml; usw.
Das ist IMHO nicht praktikabel, da man das ja kaum von den Besuchern der Seite verlangen kann.
 
Zuletzt bearbeitet:
Nun reißt mir nicht den kopf ab ... glaube ich habe meine Eingangsfrage
falsch gestellt, sorry:

Der von mir in der PHP Datei vorgegebene Text wie zum Beispiel :
", \n\nvielen Dank f¸r deine Nachricht! ..."
kommt mit den entsprechenden Umlauten an!

Meine Frage bezog sich auf die in Flash angelegten variablen Text Feldern-
Hier ein Auszug aus der Bestätigungsmail:

Liebe[r] Absender,

vielen Dank für deine Nachricht! Dies ist eine automatisch gesendete Bestätigungs e-Mail.

Deine e-Mail, die du über unsere Webseite abgeschickt hattest, ist erfolgreich bei
KINDERLEICHT eingegangen. Jetzt nimmst du an unserer Verlosung teil.
Hier kannst Du noch einmal Deine Antworten auf unsere Fragen nachlesen:

KINDER:
Wie unterscheiden sich Kinder von Erwachsenen? Wie gehen Erwachsene mit Kindern um?
ä (Umlaut falsch dargestellt)

INTERNET:
Wie oft benutzt du das Internet? Was magst du am Internet? Was machst du besonders oft,wenn du im Internet bist?
ö (Umlaut falsch dargestellt)

NEUGIERIG:Was macht dich neugierig? Kennst du Menschen, die besonders neugierig sind?
ü (Umlaut falsch dargestellt)
 
falkgottschalk schrieb:
Klar, denen nicht, aber dem php-parser.
ereg_replace()
Das ist mir schon klar, aber ist das nicht von hinten mit der Faust durchs Auge?
Und was, wenn es nächstes mal keine html Mails mehr sein sollen?

Ich persönlich würde ohnehin nur eine Mail senden und diese per CC: an mich senden lassen.
 
Wie wäre es denn mit htmlentities?

Ansonsten sollte man ereg_replace() wirklich nur nutzen, wenn es nötig ist (z.B. gefundenen Text erneut verwenden (Klammerung etc.). Ansonsten ist str_replace() deutlich schneller, was die Verarbeitung angeht.
 
mactrisha schrieb:
Hi wunderbar,

vielleicht direkt im Code:

statt Ü = &Uuml;
statt ü = &uuml;
statt Ä = &Auml;
statt ä = &auml;
statt Ö = &Ouml;
statt ö = &ouml;

schreiben?

Salü,
mactrisha.
So hatte ich das auch mal gelöst:

$data = str_replace("ä", "&auml;", $data);
$data = str_replace("ö", "&ouml;", $data);
$data = str_replace("ü", "&uuml;", $data);
$data = str_replace("Ä", "&Auml;", $data);
$data = str_replace("Ö", "&Ouml;", $data);
$data = str_replace("Ü", "&Uuml;", $data);
$data = str_replace("ß", "&szlig;", $data);

Ghetto-Gammel-Programmierer-Methode. Aber's klappt wunderbar.
 
htmlentities

htmlentities() funktioniert bei MAMP nicht. Jemand eine Idee?
 
Zurück
Oben Unten