Browser erkennt Zeichencodierung nicht
Kerstin_22
- datenbank
Hallo!
Ich habe hier folgendes Szenario: in einem Frameset wird im mittleren Frame eine Tabelle angezeigt, deren Daten aus eineder mysql-DB kommen. Ich rufe diese mittels perl DBI ab. Alle Felder in der Datenbank haben die Codierung latin1. Alle angezeigten Seiten haben den selben HTML-Header
[code]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
[code]
Nun habe ich 2 Möglichkeiten:
1: In einem Formular wird Text eingegeben und in ein Datenbankfeld geschrieben; danach im Browser wieder angezeigt. Dies funktioniert prima, auch mit Umlauten.
2: Daten werden aus einer externen Quelle in die Datenbank geschrieben und im Browser angezeigt; Umlaute werden nicht richtig angezeigt.
In beiden Fällen dekodiert mein Browser (FF2, IE7) die angezeigte Seite in UTF-8.
Stelle ich die Codierung manuell auf Latin1 um, so funktioniert auch Fall 2. Fall 1 wird immer richtig angezeigt.
Wo könnte das Problem liegen?
Viele Grüße
Alle angezeigten Seiten haben den selben HTML-Header
der die http-equiv-angabe im html-<head />-bereich ist nicht relevant - der http-header ist allen fällen (wenn gesetzt) höher gewichtet als http-equiv
das heisst:
http-header und http-equiv
http-header und ohne http-equiv
keine angabe im http-header aber mit http-equiv
keine angabe im http-header und ohne http-equiv
in den drei obrigen fällen sind die http-header und http-equiv-angaben aber lediglich empfehlungen an den browser, wenn du deine utf-8-seite unbedingt in latin-1 oder big5 darstellen willst, kannst du das immer noch umstellen
echo $begrüßung;
in den drei obrigen fällen sind die http-header und http-equiv-angaben aber lediglich empfehlungen an den browser, wenn du deine utf-8-seite unbedingt in latin-1 oder big5 darstellen willst, kannst du das immer noch umstellen
Das Umstellen der Zeichenkodierung hat primär nichts mit der Darstellung zu tun. Sie gibt nur an, gemäß welcher Kodierung die Daten vom Server zu interpretieren sind. Eine falsche oder richtige Darstellung ergibt sich dann als abhängiges Ergebnis - abhängig von der Übereinstimmung der tatsächlich vom Server verwendeten Kodierung und der Einstellung im Browser.
echo "$verabschiedung $name";
Sie gibt nur an, gemäß welcher Kodierung die Daten vom Server zu interpretieren sind.
ich korrigiere auf "versuchst, deine mit uft-8 codierte datei als latin-1 oder big5 interpretierne zu lassen"