• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

XHTML und zeichenkodierung

thuemmy

Aktives Mitglied
Mahlzeit zusammen,

für ein Referat versuche ich gerade ein XHTML-Grundgerüst zu erstellen. Bisher habe ich selber immer HTML 4.01 Transitional verwendet. (XHTML ist also für mich auch Neuland). Als charset nutze ich iso-8859-1. In HTML schreibt man das ja einfach in einen <meta>-Tag und gut ist. Bei XHTML muss ich aber die charset-Deklaration in das <xml>-Tag schreiben. Was zur Folge hat, dass der IE6 und der Opera 7.0x in den Quirksmode fällt. Fehlt die Angabe wird ja automatisch UTF-8 angezogen. Lässt sich das Verhindern, ohne gleich per PHP einen Header zu senden?

Gruß thuemmy
 
Die XML-Deklaration ist nur nötig, wenn man etwas anderes als UTF-8 schreibt. Die Meta-Angabe entfällt auch dann nicht und die Deklaration ist auch dann nur notwendig, wenn du den Inhalt als application/xhtml+xml sendest. XHTML als text/html bleibt HTML.
 
Das ich nicht die XML-Deklaration brauche, das habe ich schon irgendwo gelesen. Dann wird im http-header aber automatisch UTF-8 gesendet. Wenn ich die xml-Declaration sende, um zum Beispiel den charset iso-8859-1 zu bestimmen, dann fällt der IE6 aber in den Quirksmode und den will ich natürlich auch nicht :-(

Frage am Rande für Notepad++-Nutzer. Kann ich dem Programm irgendwo mitteilen, dass wenn ich das Format UTF-8 habe, dass die "Sonderzeichen" wie äöü beim speichern in entities umgewandelt werden?

Gruß thuemmy
 
Ich habe auch notepad++
Oben in Menü unter "Format" kannst du wählen wie man es abspeichert.

Ansonsten würde ich die gute suchen und ersetzen funktion (strg+f) nutzen.
Und immer in allen Dateien üöä ersetzen lassen.
 
Wer sagt, dass im HTTP-Header automatisch UTF-8 gesendet wird?
Üblicherweise lässt der HTTPd charset=* weg, eben weil er keine falsche Information senden möchte. Somit entscheidet der Browser, welche Kodierung das Dokument hat. Die XML-Deklaration geht dabei vor Meta-Angabe. Sofern keine XML-Deklaration oder kein Meta angegeben wurde, wird:

a) bei text/html die Voreinstellung genommen (im Firefox üblicherweise UTF-8 ). HTML5 legt da sicher etwas fest.
b) bei application/xml und application/xhtml+xml immer UTF-8 genommen
c) und bei text/xml (jetzt kommts!) US-ASCII. text/xml ist deshalb missbilligt
 
Wer sagt, dass im HTTP-Header automatisch UTF-8 gesendet wird?
Da habe ich etwas falsch verstanden gehabt. Es geht um diese Webseite: Titel der Seite
Ich habe es per Dateiupload auf HTML/XHTML/XML/WML Validierungsservice validieren lassen. Mit dem Ergebniss dass es nicht valide ist (ungültiges Zeichen) und mit folgendem Hinweis:
In diesem XHTML-Dokument wurde keine Angabe zu einer Zeichenkodierung gefunden.
Allerdings wurde ein Meta-Element mit der Angabe zu einer Zeichenkodierung gefunden (iso-8859-1).
Diese Art der Kodierungsangabe wird bei XHTML-Dokumenten nicht verarbeitet und sollte nur zwecks Abwärtskompatiblität zu HTML vorhanden sein.
Fügen Sie entweder eine XML-Deklaration mit einer Angabe einer Zeichenkodierung am Anfang des Dokumentes ein (z. B. <?xml version="1.0" encoding="iso-8859-1"?>, oder veranlassen Sie Ihren Server das Senden eines entsprechenden HTTP-Header (bei PHP mit header('Content-Type: text/html; charset=iso-8859-1');).
Da keine gültige Kodierungsabgabe vorhanden ist, wurde dieses Dokument per Fallback mit UTF-8 verarbeitet.
Wenn ich es vom Webspace aus validieren lasse, dann ist alles ok.

Ich habe wohl den Satz
Da keine gültige Kodierungsabgabe vorhanden ist, wurde dieses Dokument per Fallback mit UTF-8 verarbeitet.
falsch interpretiert. Ich bin davon ausgegangen, dass der Webserver das Dokument mit UTF-8 verarbeitet/sendet. Wobei aber auch klar dort steht, dass der Browser die Meta-Angaben nicht interpretiert. Woran liegt es aber nun, dass das Dokument per Dateiupload invalide ist und das validieren vom Webspace aus ein valides Ergebniss zeigt. Mir sagt das eigentlich, dass der HTTPd im Header einen charset sendet, indem das Ü erlaubt ist. Oder bin ich jetzt total auf dem Holzweg?

Gruß von einem total verwirrten thuemmy
 
Sorry, aber Validome ist dämlich.

Verständnisproblem: du schreibst kein XHTML, sondern HTML.
Klingt komisch, aber alles was als text/html gesendet wird, wird als HTML behandelt. Doctypes sind äußerst nichtssagend. Deshalb gibt es in HTML 5 den Doctype auch nur noch, um Browser in den Standardmode zu setzen. Der HTML 5 Doctype sieht deshalb ganz allgemein so aus:
Code:
<!DOCTYPE html>
Der Doctype hat nur noch ein Bedeutung beim validieren.

Und weil eben HTML-Dokument keine XML-Deklarationen haben, hast du alles richtig gemacht.

*edit*
Der Server dort sendet Content-Type: text/html; charset=ISO-8859-1. Evtl. liest er dieses vorher aus dem HTML-Dokument.
 
Zuletzt bearbeitet:
Bei Firebug hatte ich mal (halbherzig) gesucht und nichts gefunden, bei WebDeveloper habe ich noch nicht geschaut.... Werde ich heute abend nachholen.

Danke für die Info
Gruß thuemmy

Edit: Zumindest im Web Developer habe ich es gefunden.
 
Zuletzt bearbeitet:
Zurück
Oben