Ich habe ein seltsames Problem mit der Codierung, wie folgt beschrieben:
Das ù wird jetzt als ¹ im Betreff der E-Mail angezeigt. Die E-Mail wird über die PHP-Mail-Funktion gesendet.
Wenn die E-Mail in der Mailbox angezeigt wird, wird sie korrekt angezeigt. Wenn jedoch jemand die E-Mail öffnet, wird das ù plötzlich zu ¹.
%Vor%sollte
sein %Vor%Ich habe bereits die Codierung verwendet.
$emailsubject
enthält den oben genannten E-Mail-Betreff.
In localhost funktioniert es richtig, aber auf dem Webserver funktioniert es nicht richtig. Im Webserver ist auch die Codierung standardmäßig auf utf-8 eingestellt.
Was mache ich falsch? Vielen Dank im Voraus.
Ihr Code ist absolut korrekt, es ist kein Fehler darin, aber die anderen Dinge sind fehlerhaft. Wie ich Nachrichtenquelle Header und Nachricht brauche, um Ihnen genau zu sagen, was passiert? Ich habe weiter keine Informationen darüber, ob Sie die E-Mail als Text oder HTML senden. Aber es gibt im Allgemeinen zwei Fragen, die sind:
Grund für das falsche Zeigen des Charakters ist, dass Entwickler vergessen, die Nachricht als MIME-Version zu beschreiben. Wenn die Nachricht den Header "Mime-Version" fehlt, den die Internet-Mail-Standards erfordern, ignoriert Webmail den Header "charset" vollständig und fügt die Nachricht nur dann ein, wenn sie bereits im UTF-8-Zeichensatz enthalten ist.
Wenn Sie das Motiv mit utf-8-Codierung anzeigen möchten, müssen Sie das Thema wie folgt codieren:
%Vor%Wenn die oben genannten Dinge das Problem nicht lösen, dann fordern Sie Sie auf, die RAW-Kopfzeilen der E-Mail zu posten, da dies zu einer besseren Lösung des Problems beitragen wird.
Da Sie in den Kommentaren angeben, dass Sie Joomla 1.5 verwenden, scheint es ein Problem mit der phpmailer()
-Bibliothek in dieser Version zu geben, das den Zeichensatz des Mailers - für die Nachricht - zwingt, Dinge mit dem Zeichen auszusenden Setze die Einstellung von iso-8559-1
. Um dies zu beheben, öffne hier den Core phpmailer()
libary:
[Pfad zu Ihrer Joomla-Installation] /libraries/phpmailer/phpmailer.php
Um Zeile 50 gibt es eine Einstellung namens $CharSet
. Ändere das in utf-8
, wenn es nicht bereits auf dieses gesetzt ist:
Sie können auch Ihre Joomla 1.5-Codebase nach iso-8559-1
durchsuchen, um zu sehen, ob eine Komponente oder Bibliothek iso-8559-1
encoding irgendwo in der Code-Kette erzwingt.
Und eine andere Einstellung, die ich empfehlen würde, ist $Encoding
um Zeile 63 herum. Die Standardeinstellung scheint 8bit
zu sein, aber ich musste das in der Vergangenheit entweder auf quoted-printable
oder base64
anpassen, um einige zu lösen Mailing-Probleme bei bestimmten Setups, an denen ich gerade arbeitete.