Sven Rautenberg: Umlaute in E-Mails (header funktioniert schon)

Beitrag lesen

Moin!

der Header funktioniert so wenigstens ordentlich.
  $subject = 'Text zum Ändern';
  $subject = utf8_encode($subject);
  $subject = '=?utf-8?b?'.base64_encode($subject).'?=';

Naja, etwas brutal, denn das Theater nach RFC2047 ist nur nötig, wenn der Header-Wert nicht ausschließlich aus ASCII-Zeichen besteht (/^[\x20-\x7E]*$/ trifft für den Wert nicht zu). Außerdem ist es nicht notwendig, den gesamten Header-Wert zu escapen, man *darf* auch nur Teile escapen.

Es ist aber die simpelste Methode, die man anwenden kann, ohne komplexe Stringoperationen auspacken zu müssen. Ansonsten müßte man jedes Zeichen darauf prüfen, ob es in 7-Bit-ASCII enthalten ist, und andernfalls das Escaping drumherumstricken. Und gerade bei UTF-8 ist das doch etwas fummeliger, zumal man am Ende ja vermutlich nicht jedes Zeichen einzeln escapen will, sondern vermutlich zusammenhängende Zeichen in einer Verpackung hätte.

- Sven Rautenberg

--
"Love your nation - respect the others."