Hast du jetzt schon überprüft, ob die Daten wirklich korrekt in der Datenbank stehen? Für mich sieht es so aus, als wurde Zeichenmüll gespeichert.
Zeichensatzproblem bei eMails
Einklappen
X
-
Ich werde morgen testen, welchen Zeichensatz die Variable hat, die dann in die Datenbank gespeichert wird - also VOR dem Eintrag.
Falls bereits diese UTF8 enthält - kann ich diesen mittels utf8_decode() in latin1 umwandeln? Oder weißt du, welcher Befehl dann passen würde?
Ich möchte mich jedenfalls jetzt schon herzlich für deine Hilfe und Zeit bedanken!!
Kommentar
-
Gerade probiert, dieses Ergebnis
Code:test: latin1 encoding: UTF-8
PHP-Code:echo "test: ",mysql_client_encoding(),"<br>";
echo "encoding: ",mb_detect_encoding($text),"<br>";
HTML-Code:<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Kommentar
-
Der Browser interessiert sich nicht für den Meta-Tag. Da kannst du reinschreiben, was du willst. Wichtig ist welcher Zeichensatz im HTTP-Header angegeben ist.
PHP-Code:header('Content-Type: text/html; charset=ISO-8859-1');
Zuletzt geändert von h3ll; 20.03.2013, 23:35.
Kommentar
-
Zitat von h3ll Beitrag anzeigenDu kannst dir im Browser übrigens auch anzeigen lassen, welche Zeichenkodierung er wirklich verwendet.
Der dritte Parameter macht erst den Unterschied, da dann strict.
Mit dem dritten Parameter true lässt sich überprüfen, ob es wahr ist oder nicht!
Die vorletzte Zeile ergibt false, weil es mit strict "streng genommen" kein UTF-8 ist, sondern ISO-8859-1.
PHP-Code:echo "test: ",mysql_client_encoding(),"<br>"; // test: latin1
echo mb_detect_encoding($text)."<br>"; // UTF-8
echo mb_detect_encoding($text, "UTF-8")."<br>"; // UTF-8
echo mb_detect_encoding($text, "iso-8859-1")."<br>"; // ISO-8859-1
echo mb_detect_encoding($text, "UTF-8", true)."<br>"; //
echo mb_detect_encoding($text, "iso-8859-1",true)."<br>"; // ISO-8859-1
PHP-Code:echo "test: ",mysql_client_encoding(),"<br>";
echo mb_detect_encoding($text, "UTF-8, UTF-7, ASCII, iso-8859-1, iso-8859-15", true)."<br>";
/* Ausgabe:
test: latin1
ISO-8859-1
*/
Zuletzt geändert von Melewo; 21.03.2013, 01:33.
Kommentar
-
Zitat von freakgesicht Beitrag anzeigenPHP-Code:echo "encoding: ",mb_detect_encoding($message),"<br>";
test: latin1
encoding: UTF-8
PHP-Code:function CODING($string) {
$zeichen = array(
"UTF-8", "UTF-7", "ASCII", "iso-8859-1", "iso-8859-2",
"iso-8859-2", "iso-8859-4", "iso-8859-5", "iso-8859-6",
"iso-8859-7", "iso-8859-8", "iso-8859-9", "iso-8859-10"
);
return mb_detect_encoding($string, $zeichen, true);
}
echo "encoding: ".CODING($message)."<br>";
Kommentar
-
Hallo Melewo, hallo h3ll!
Da ich massiv Zeitdruck wegen meines Scripts habe, entschied ich mich nun für den einfach Workaround des reinen Text-Mails. Da funktioniert alles problemlos. Ich versende den Text nun mit UTF-8 im Mailheader.
Bitte fasst das nicht als Geringschätzung eurer Hilfsbereitschaft auf, aber ich bin einfach nur froh, dass zumindest damit alles funktioniert.
Sobald ich wieder ein bisschen mehr Zeit habe, werde ich eure Vorschläge gerne prüfen, weil auch mich interessiert es, wo hier mein Fehler liegt.
Also nochmals herzlichen Dank an euch, Melewo und h3ll!!! Ihr seid super!
Kommentar
Kommentar