Doctype und Umlaute
Manolo
- html
Hallo,
irgendwie habe ich das mit den Doctypes noch nicht ganz begriffen.
so sieht mein Doctype aus
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
und so die Meta-Angabe
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
Sobald jetzt aber ein Umlaut in einem Feld erscheint, meckert der Validator:
Das Dokument ist nicht valides XHTML 1.0 Transitional
Benutzte Zeichenkodierung:
utf-8
Quelle:
Fallback
Schwerer Fehler
Im Dokument befindet sich in Zeile 81 und Spalte 73 ein ungültiges Zeichen.
Dieses Zeichen ist in der verwendeten Zeichenkodierung (utf-8) nicht erlaubt.
Wieso kommt er darauf, daß ich UTF-8 verwende bzw. was mache ich falsch.
Danke für eine verständliche Fehleranalyse
Mano
moin,
<meta http-equiv='Content-Type' content='text/html; charset=iso-»» Wieso kommt er darauf, daß ich UTF-8 verwende bzw. was mache ich falsch.
Gib mal den URI bitte.
roro
Hi,
irgendwie habe ich das mit den Doctypes noch nicht ganz begriffen.
Dein Problem hat mit dem DOCTYPE nichts zu tun.
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
Sobald jetzt aber ein Umlaut in einem Feld erscheint, meckert der Validator:
Das Dokument ist nicht valides XHTML 1.0 Transitional
Benutzte Zeichenkodierung:
utf-8
Der Server meldet, dass es sich bei der Dokumentkodierung um UTF-8 handelt. Das hat gegenüber dem <meta>-Element Priorität.
Cheatah
Hallo Cheatah
Der Server meldet, dass es sich bei der Dokumentkodierung um UTF-8 handelt. Das hat gegenüber dem <meta>-Element Priorität.
das mit der Priorität scheint mir logisch, aber wo gebe ich im Doctype an, welche Codierung es sein soll?.
Mein Ansatz ist der, dass ich ordentlich codieren möchte ( XTHML strict oder wenigstens transitional ) und das wenn möglich mit Umlauten.
Gruss Mano
Hello out there!
aber wo gebe ich im Doctype an, welche Codierung es sein soll?.
Gar nicht.
Der Server meldet, dass es sich bei der Dokumentkodierung um UTF-8 handelt.
Es ist eine Einstellung des Servers. Willst du diese ändern, musst du es dort tun (evtl. in 'http://de.selfhtml.org/servercgi/server/htaccess.htm@title=.htaccess'): AddDefaultCharset
Mein Ansatz ist der, dass ich ordentlich codieren möchte
Löblich. ;-)
See ya up the road,
Gunnar
Hallo,
Dein Fehler ist, dass du XHTML benutzt, aber keine XML-Deklaration angibst:
<?xml version="1.0" encoding="iso-8859-1" ?>
Schreibe das in die erste Zeile und dann sollte der Validator ruhig sein. Man kann diese Angabe zwar auch weglassen, aber dann wird das Standard-Encoding verwendet und das ist nuneinmal UTF-8. Deshalb meckert der Validator.
Mein Tipp ist deine Dokumente auf UTF-8 umzustellen, dann kannst du die XML-Deklaration weglassen und der IE kann wegen ihr auch nicht in den Quirksmodus fallen.
Wenn du deine Seite auf einem Server hast, dann sieht die ganze Sache nocheinmal anders aus, denn dann zählt die Kodierung, die der Server im Header angibt (Header ungleich <head>). Da solltest du dann also auch nocheinmal darauf achten, was dort angegeben ist als Kodierung.
Gruss,
OhneName
Hallo,
darf ich noch mal kurz nachhaken?
Wie erstelle ich Dokumente in UTF-8? Einfach nur entsprechend abpspeichern und was istt dann mit den Umlauten? Welche Vorteile hat UTF?
Gruss Mano
Hallo,
Wie erstelle ich Dokumente in UTF-8?
Mit einem UTF-8-fähigen Editor. Z.B. Notepad2.
Einfach nur entsprechend abpspeichern
In Notepad2 File->Encoding->UTF-8 aktivieren und abspeichern.
und was istt dann mit den Umlauten?
Einfach hinschreiben wie du es gewöhnt bist.
Welche Vorteile hat UTF?
UTF-8 enthält alle wichtigen Sonderzeichen von allen wichtigen Sprachen. Damit musst du dir nie wieder Sorgen darum machen, ob deine Sonderzeichen denn jetzt im Browser auch richtig angezeigt werden.
Gruss,
OhneName
Hello out there!
UTF-8 enthält alle wichtigen Sonderzeichen von allen wichtigen Sprachen. Damit musst du dir nie wieder Sorgen darum machen, ob deine Sonderzeichen denn jetzt im Browser auch richtig angezeigt werden.
Doch. Zur Anzeige eines Zeichens muss eine Schriftart auf dem Rechner des Nutzers vorhanden sein, die das Zeichen enthält.
Auch dann stellt der IE einige Zeichen nicht dar, die der Firefox auf demselben Rechner problemlos darstellt.
See ya up the road,
Gunnar
Hello out there!
darf ich noch mal kurz nachhaken?
Gern.
Wie erstelle ich Dokumente in UTF-8? Einfach nur entsprechend abpspeichern
Ja; vorzugsweise ohne BOM
Erstellen ist aber noch nicht alles. Du musst die Ressourcen auch entsprechend ausliefern, d.h. deine Servereinstellungen anpassen.
und was istt dann mit den Umlauten?
Nichts besonderes; d.h. null Problemo.
Welche Vorteile hat UTF?
Dass sich damit sämtliche UCS/Unicode-Zeichen codieren lassen, nicht nur eine bescheidene Auswahl von 191 Zeichen wie bei ISO 8859-x.
See ya up the road,
Gunnar
Hallo,
Wie erstelle ich Dokumente in UTF-8? Einfach nur entsprechend abpspeichern
Ja; vorzugsweise ohne BOM
Ist BOM wirklich stom? *
SELFHTML will z.B. auf UTF-8 einstellen; jetzt denke ich an die Durchschnittsuser, die die Datei öffnen.
UTF-8 und ISO-8859-1 kann man ja nicht maschinell unterscheiden, aber ein BOM ist für einen Editor glaube ich noch das sicherste Merkmal. Wie sieht es da aus, was macht der Windows-Editor z.B., erkennt er UTF-8 und hat das BOM einen Ausschlag?
Mathias
Hallo,
SELFHTML will z.B. auf UTF-8 einstellen; jetzt denke ich an die Durchschnittsuser, die die Datei öffnen.
UTF-8 und ISO-8859-1 kann man ja nicht maschinell unterscheiden, aber ein BOM ist für einen Editor glaube ich noch das sicherste Merkmal. Wie sieht es da aus, was macht der Windows-Editor z.B., erkennt er UTF-8 und hat das BOM einen Ausschlag?
Ja und nein ;-). Notepad ab Windows 2000 öffnet UTF-8 codierte Dateien korrekt, sowohl mit und ohne BOM. Speichern kann er aber nur mit BOM (Windows 2000 jedenfalls, XP oder Vista habe ich hier grade nicht). Das gilt sowohl beim direkten Öffnen der Datei als auch bei Ansicht-Quelltext im IE.
Wird eine *.htm(l)-Datei via file-Protokoll im Browser geöffnet, übergibt Windows die Kodierung (UTF-8) an den Browser, wenn die Datei ein BOM hat, ohne wird das default encoding übergeben. Eine Datei mit dem Inhalt:
<p>äöüÄÖÜ</p>
als UTF-8 mit BOM gespeichert, wird also von den Browsern mit der Kodierung UTF-8 empfangen. Die selbe Datei, ohne BOM gespeichert, benötigt hierfür ein:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
Allerdings hat die BOM auch Nachteile, beispielsweise muss man es konsequent in allen Ressourcen (CSS, JavaScript) verwenden, kann also in ein UTF-8(BOM)-HTML-Dokument keine ISO-kodierte CSS Ressource einbinden und auch keine BOM-Ressource in ein BOM-loses Dokument. Jedenfalls erinnere ich das so ;-), in der Praxis nutze ich nie ein BOM.
viele Grüße
Axel
Hallo,
Allerdings hat die BOM auch Nachteile, beispielsweise muss man es konsequent in allen Ressourcen (CSS, JavaScript) verwenden, kann also in ein UTF-8(BOM)-HTML-Dokument keine ISO-kodierte CSS Ressource einbinden und auch keine BOM-Ressource in ein BOM-loses Dokument.
Habs grade nochmal probiert. Das oben Gesagte gilt für aktuelle FireFox nur (noch?) für UTF-16 mit BOM. Aktuelle Opera scheint das gar nicht mehr zu jucken.
viele Grüße
Axel
Hello out there!
<?xml version="1.0" encoding="iso-8859-1" ?>
Schreibe das in die erste Zeile und dann sollte der Validator ruhig sein.
Nope, die Angabe im HTTP-Header hat auch Vorrang vor der in der XML-Deklaration.
Man kann diese Angabe zwar auch weglassen, aber dann wird das Standard-Encoding verwendet und das ist nuneinmal UTF-8.
Nope, verwendet wird die vom Server im HTTP-Header angegebene. Wenn keine solche vorhanden ist, _dann_ gilt UFT-8.
Ähm – sagtest du ja:
Wenn du deine Seite auf einem Server hast, dann sieht die ganze Sache nocheinmal anders aus, denn dann zählt die Kodierung, die der Server im Header angibt
See ya up the road,
Gunnar
Hallo,
Ich bin vom einfachsten Fall ausgegangen, dass er seine Seite noch nicht auf einem Server hat und nur lokal testet. Aus dieser Position heraus ist mir der Validatorfehler nämlich auch schon begegnet und ich konnte ihn auf diese Weise beseitigen.
Gruss,
OhneName