Sven Rautenberg: danke

Beitrag lesen

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