php +mail +utf-8 +deutsche sonderzeichen?
am 06.10.2004 19:58:45 von Christian-Josef Schrattenthaler
Hallo!
Ich habe einen Fedora Core 2 Server installiert. Ist eine Standardinstallation mit allen derzeitigen Updates.
Soweit läuft alles einwandfrei, nur wenn ich per PHP Mails verschicke, dann sind die deutschen Sonderzeichen (Umlaute) hin.
Ich denke mal, das liegt irgendwie daran, dass der Linuxsrver eigentlich mit UTF-8 arbeitet. Auf das alte System zurückstellen will
ich aber nicht.
Hat jemand einen Tipp, wie ich das Problem lösen kann?
Gruß,
Christian.
Re: php +mail +utf-8 +deutsche sonderzeichen?
am 07.10.2004 15:50:01 von Uli Honal
Christian-Josef Schrattenthaler wrote:
> [..] wenn ich per PHP Mails verschicke,=20
> dann sind die deutschen Sonderzeichen (Umlaute) hin.
>=20
> Ich denke mal, das liegt irgendwie daran, dass der Linuxsrver eigentlic=
h=20
> mit UTF-8 arbeitet. [..]
Hi,
PHP arbeitet nativ immer mit 8-bit Strings, egal was das OS von=20
Unicode hält. (Aussnahme: mbstring-Extensions). Viele PHP-Funktionen=20
gehen davon aus, das die Strings in Latin1 (=3D ISO-8859-1) encoded sind.=
E-Mails werden üblicherweise in 7-Bit ASCII oder 8-Bit + Codepage oder =
manchmal in 8-Bit UTF-8 verschickt. In jedem Fall sollte das=20
verwendete Encoding a) in den 'Content-Transfer-Encoding' und=20
'Content-Type'-Headern des Mails beschrieben und b) im Mail-Body auch=20
so verwendet werden. Um beides musst Du dich in PHP selbst kümmern,=20
oder eine fertige Klasse verwenden, die das tut.
Die Mail-Header selbst dürfen nur 7-Bit ASCII enthalten.
Schau Dir einfach mal den Quelltext einiger Postings hier in der=20
Gruppe (z.B. Deine Eigenes ;-) an, und achte auf die Header, und wie=20
die verschiedenen Encodings aussehen.
Die nötigen Funktionen findest Du dann im Manual..
http://de3.php.net/manual/en/function.imap-8bit.php
http://de3.php.net/manual/en/function.base64-encode.php
http://de3.php.net/manual/en/function.utf8-encode.php
http://de2.php.net/iconv
etc.
Leider hast Du nicht gepostet, woher der Text stammt, den Du=20
verschicken willst, und wie er vorliegt. Deshalb kann ich Dir keine=20
genauere Antwort geben..
(x-post nach dclp.installationen entfernt)
HTH,
-Uli.