Moin!
Oha, das war Schwerstarbeit. Was ich nicht wissen konnte, bei der Übernahme von $_POST in eine Variable geht offenbar die UTF-8 Eigenbschaft verloren.
Da PHP den Strings keinerlei Eigenschaft des ihnen innewohnenden Encodings zuordnet, kann diese Eigenschaft auch nicht verloren gehen - es sei denn, was ich für sehr unwahrscheinlich halte, du redest von PHP Version 6.
Deshalb muss dieses hier
»» Harlequin hat es eigens für Dich herausgesucht :-)
"Before you use mb_encode_mimeheader with UTF-8 set mb_internal_encoding('UTF-8')."
nicht "irgendwo" vor mb_internal_encoding() stehen, sondern ganz oben im PHP- Script:
Ich weiß ja nicht, was du zwischen mb_internal_encoding() und mb_encode_mimeheader() so machst. Logisch, dass das Setting der mb_*-Funktionen erfolgt sein muss, bevor man sie anwendet.
<?php
header('content-type: text/html; charset=utf-8'); // hatte ich schon
mb_internal_encoding('UTF-8'); // seit 2009-03-14 21:15
...Da bin ich rein zufällig drauf gekommen. Der Rest ist dann Pipifax.
$subject = mb_encode_mimeheader( utf8_encode( "Grüße von " ).$arr_in['name'], "UTF-8", "Q" );
Und wenn du dein Skript direkt als UTF-8-codiert abgespeichert hättest, hättest du auch deutlich weniger Probleme mit nicht in UTF-8 codierten Strings, und folglich auch nicht die Notwendigkeit des Einsatzes von utf8_encode() für feste Strings wie "Grüße von ".
- Sven Rautenberg