PHP - Encoding - Problem
Hallo, ich habe folgendes Problem mit dem Encoding.
MySQL DB ist UTF8, Im Header steht
<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
<head>
<title>Stammtisch für Schwerhörige Freiburg</title>
<meta http-equiv="content-type" content="text/html; charset="utf-8">
also ebenfalls UTF8.
Folgendes Problem:
Wenn ich in die DB schreibe passiert bei folgender Konfiguration des Strings in PHP unterschiedliches in IE und Opera.
$kommentar = trim($_POST['kommentar']))
IE alles klar, Opera macht aus äüöß Ã¤Ã¼Ã¶ÃŸ
$kommentar = utf8_decode(trim($_POST['kommentar']))
Opera: alles ok, IE macht aus äüöß ??
$kommentar = utf8_encode(trim($_POST['kommentar']))
Geht in beiden Browsern nicht-->klar
Aber wie zum Henker kriege ich den String in allen Browsern richtig in die DB geschrieben?
Es geht um www.shstammtisch.de
MySQL DB ist UTF8, Im Header steht
<!DOCTYPE html PUBLIC "-W3CDTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
<head>
<title>Stammtisch für Schwerhörige Freiburg</title>
<meta http-equiv="content-type" content="text/html; charset="utf-8">
also ebenfalls UTF8.
Folgendes Problem:
Wenn ich in die DB schreibe passiert bei folgender Konfiguration des Strings in PHP unterschiedliches in IE und Opera.
$kommentar = trim($_POST['kommentar']))
IE alles klar, Opera macht aus äüöß Ã¤Ã¼Ã¶ÃŸ
$kommentar = utf8_decode(trim($_POST['kommentar']))
Opera: alles ok, IE macht aus äüöß ??
$kommentar = utf8_encode(trim($_POST['kommentar']))
Geht in beiden Browsern nicht-->klar
Aber wie zum Henker kriege ich den String in allen Browsern richtig in die DB geschrieben?
Es geht um www.shstammtisch.de
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121414
Url: https://administrator.de/contentid/121414
Ausgedruckt am: 05.11.2024 um 13:11 Uhr
7 Kommentare
Neuester Kommentar
Hallo,
es geht doch um das Encoding der Daten, die der Client an den Server schickt oder? Dann ist eine encoding-Definition im Seitenheader zwar sicher nicht falsch, aber nur begrenzt hilfreich. Lösung: füge in das <form>-Tag ein "accept-charset="-Attribut ein. Damit solltest du zumindest von allen Browser das gleiche Ergebnis erhalten.
Gruß
Filipp
es geht doch um das Encoding der Daten, die der Client an den Server schickt oder? Dann ist eine encoding-Definition im Seitenheader zwar sicher nicht falsch, aber nur begrenzt hilfreich. Lösung: füge in das <form>-Tag ein "accept-charset="-Attribut ein. Damit solltest du zumindest von allen Browser das gleiche Ergebnis erhalten.
Gruß
Filipp
Schau mal mit einem geeigneten Tool (z.B. Fiddler für IE, Live HTTP Headers für Firefox), welches Encoding im HTTP-Header "Content-Type" angegeben ist. Wenn im Dokument selbst eine andere Angabe steht als der Webserver in seinen Headern ankündigt, geraten manche Browser aus dem Tritt. Standardkonform ist das Verhalten, daß die Header direkt vom Webserver Vorrang vor den Angaben im entsprechenden Meta-Tag haben.
Eventuell schafft eine .htaccess (falls der Webserver Apache zum Einsatz kommt) mit der Zeile oder Abhilfe.
Eventuell schafft eine .htaccess (falls der Webserver Apache zum Einsatz kommt) mit der Zeile
AddDefaultCharset Off
AddDefaultCharset "gewünschte Codierung"
Stimmt vor dem utf-8 ist das " zu viel, der HTML-Parser erkennt nur als
Bezüglich der Mails solltest du das Encoding verwenden, in dem deine Texte (aus dem Script oder aus der Datenbank etc.) vorliegen. Wenn deine Programmtexte und Datenbank-Textwerte in UTF-8 vorliegen, dann nimm UTF-8, ansonsten die passende 8-bit Codierung. Die meisten modernen eMail-Clients und webmailer können problemlos mit UTF-8 codierten Mails umgehen.
<meta http-equiv="content-type" content="text/html; charset="utf-8">
content-type: text/html; charset=
Bezüglich der Mails solltest du das Encoding verwenden, in dem deine Texte (aus dem Script oder aus der Datenbank etc.) vorliegen. Wenn deine Programmtexte und Datenbank-Textwerte in UTF-8 vorliegen, dann nimm UTF-8, ansonsten die passende 8-bit Codierung. Die meisten modernen eMail-Clients und webmailer können problemlos mit UTF-8 codierten Mails umgehen.