Thomas J.S.: XML-Deklaration und Doctype Switching

Beitrag lesen

Hallo Mathias,

Ohne XML-Deklaration/encoding-Attribut und ohne Kodierungsangabe via meta-Element?

Ja.

Mein Testdokument sieht so aus:

Habe ich bei mir ausprobiert, alles wird angezeigt: sowohl über das lokale Sysem, als auch über den Webserver. In Opera und Firebirds.
Nur wenn ich die Encoding von Hand umstelle passiert was.

Mein Dok was fast genau so:
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <title>bla bla</title>
   </head>
   <body>
<!-- ein wenig Inhalt mit Umlauten etc. -->
   </body>
</html>

(Die Zeichen werden wahrscheinlich nicht alle übertragen, es sind wie gesagt die 8-Bit-Zeichen von ISO-8859-1.)

Sind alle da.

Opera 7.20 rät meinen Tests zufolge bei XHTML nicht. Wenn ein XHTML-Dokument als application/xhtml+xml ausgeliefert wird bzw. als solches lokal aufgerufen wird und keine Kodierung (HTTP-Header oder XML-Deklaration) angegeben ist, nimmt Opera immer als Fallback UTF-8 an.

Aha... ich habe 7.11 und er sagt (war deine Datei) :

URL of main page:
http://127.0.0.1/forum/xhtml2.xhtml
Encoding from server (used by Opera):
(windows-1252)
MIME type from server:
application/xhtml+xml
Local cache file:
C:\Programme\Opera7\Cache4\opr0009V.xml
                                  ^^^^^^
---------------------------------------
URL of main page:
file://localhost/F:/forumtests/xhtml2.html
Encoding from server (used by Opera):
(windows-1252)
MIME type from server:
text/html
-----------------------------------------

Zumindest weiss ich jetzt warum er bei mir alle Zeichen anzeigt. Encoding ist auf "Auto Detect". Darin ist er übrigens einig mit Firebird, der nimmt auch die Encoding vom OS (win98) an.

(Unter »Encoding from server« steht die irgendwo angegebenen Kodierung [auch meta-Element und XML-Deklaration], damit ist nicht zwangsläufig HTTP gemeint, eine Byte Order Mark wird bspw. auch als Indikator genutzt.)

Wenn ich die XML-Dekl. hinzufüge sagt mir Opi folgendes:
Encoding from server (used by Opera):
iso-8859-1 (windows-1252)

Bei Gecko ist das wie gesagt über die automatische Erkennung erklärbar, beim Opera teile ich im Falle von »echtem« XHTML deine Beobachtung nicht, kann es mir nur durch ein eventuell vorhandenes meta-Element erklären; oder du verwendest eine andere Opera-Version.

Keine Meta-Angaben, aber wie gesagt 7.11

(übrigens beide zeigten sowohl das xhtml als auch das html Dokument ohne die XML-Dekl. auch mit US-ASCII als Encoding richtig an)

Falls du meinst, dass Opera Windows-1252 letztlich verwendet, wenn man die Kodierung manuell auf US-ASCII stellt: das stimmt auch.

Das habe ich gemeint.
Und jetzt wissen wir aber wirklich alles über Opera ;-)

Grüße
Thomas