Hi Piet,
ja genau, da kommt es einfach drauf an, dass der Browser "irgendwie" erfährt welchen Zeichensatz die Webseite benutzt.
Das beschriebene Problem ist, dass mancher Browser das meta charset innerhalb der ersten 1024 Zeichen der Webseite erwartet. Ist dann vor dem meta-tag dann aber das meta-tag keywords und meta-tag description (unsinnigerweise) mit sehr viel Text gefüllt, findet der Browser das meta charset nicht mehr. Er macht dann einfach was er für richtig hält. Und das kann halt auch das Darstellen der Seite in Iso sein. Damit sehen die Umlaute dann nicht so gut aus
Ich mache es jetzt immer so, dass der httpheader und danach der meta-tag fürs charset gleich an den Anfang des header-tag kommen. Also so:
- Code: Alles auswählen
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
...erst hier kommen dann die weiteren Meta-tags
...
</head>
Das gilt für die webseiten mit DOCTYPE html bzw. DOCTYPE HTML 4.0 .... Bei DOCTYPE xhtml müssen die tags mit Leerzeichen,Schrägstrich geschlossen werden. Der Doctype steht vor dem html-tag der Seite, ist also praktisch die erste Zeile html-Code.
Sieht dann so aus:
- Code: Alles auswählen
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta charset="UTF-8" />
...
...
</head>
Damit sollte dieses Problem dann gelöst sein.
Achso, im randshop kann die Konstante für den Zeichensatz verwendet werden. Sieht dann so aus (für Doctype html):
- Code: Alles auswählen
<head>
<meta http-equiv="content-type" content="text/html; charset=<?php echo CHARSET ?>">
<meta charset="<?php echo CHARSET ?>">
...erst hier kommen dann die weiteren Meta-tags
...
</head>
Auf der
oben beschriebenen Seite habe ich noch weitere Möglichkeiten aufgeschrieben, mit denen das gleiche Ziel erreicht werden kann. Kann man dann bei Bedarf anwenden. Das eben gezeigte Beispiel im html-Code sollte aber im Allgemeinen vollkommen ausreichen. Funktioniert auch unabhängig von der Serverkonfiguration und stört nicht in php.
viele Grüße
magnus