Mathias Brodala: E-Mail setzt die Umlaute falsch um.

Beitrag lesen

Hallo Phil.

Im moment verschicke ich meine E-Mails so:

$von=$_POST['von'];
$betreff=$_POST['betreff'];
$text=$_POST['text'];

Wozu diese Umspeicherung? Verwende doch die Schlüssel von $_POST direkt.

$xtra="From: $von \r\n";
$xtra.= 'MIME-Version: 1.0' . "\r\n";
$xtra.= 'Content-type: text/html; charset=uft-8' . "\r\n";

$an="email@mail.de";

mail($an,$betreff,$text,$xtra);

Nur Leider werden die Umlaute nicht umgesetzt. Aus Ö wird Ã�.

Überaus merkwürdig, denn „Fehldargestelltes UTF-8-kodiertes „Ö““ wäre ein zwar in UTF-8 kodiertes aber nicht dieserart interpretiertes „Ö“. Das Ersatzzeichen (�) dagegen wird in diesem Zusammenhang normalerweise dann dargestellt, wenn eine bestimmte Bytefolge in UTF-8 keinem gültigen Zeichen zugeordnet werden kann. (Z. B. also wenn als ISO-8859-1 gesicherte Texte als UTF-8 interpretiert werden.)

Es scheint also, als würden hier zwei Kodierungen vermischt, wobei keine von beiden die richtige ist.

Was ergibt bei dir folgendes, wenn du „TÖST“ übergibst?

$arr_chars = [link:http://de2.php.net/manual/en/function.str-split.php@title=str_split]($_POST['text']); // Zeichenkette aufsplitten  
  
foreach($arr_chars as $str_char) {  
  
  echo [link:http://de2.php.net/manual/en/function.ord.php@title=ord]($str_char), ' '; // Numerische Repräsentation der Zeichen ausgeben  
  
}

In meiner UTF-8-orienterten Umgebung ergibt dies beispielsweise folgendes:

84 195 150 83 84
(T  Ö       S  T)

Hast du bei deinem Formular explizit UTF-8 für das http://de.selfhtml.org/html/referenz/attribute.htm#form@title=accept-charset-Attribut festgelegt?

Einen schönen Samstag noch.

Gruß, Mathias

--
sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
debian/rules