CSS 2.1 · At-Regel
At-Regel @charset
Vollreferenz zu @charset aus CSS 1 und CSS 2.1 mit Syntax, Bedeutung, Beispiel und Browserunterstützung.
@charsetAt-Regeln gelten für das ganze Stylesheet und haben kein einzelnes Element, an dem sich ein Regler drehen ließe. Das Code-Beispiel weiter unten zeigt die Syntax, der Abschnitt Erläuterungen die Wirkung.
Allgemeines
Stylesheets, die in ein Dokument eingebettet sind, z. B. durch das Element style oder das HTML-Attribut style, übernehmen immer die Zeichenkodierung des umschließenden Dokuments. Ist das Stylesheet jedoch in eine oder mehrere separate Dateien ausgelagert, bleibt es theoretisch zunächst offen, nach welchem Zeichenset die Zeichen des Stylesheets kodiert sind.
CSS-Dateien sind einfache Textdateien, deren Inhalte nach US-ASCII auslesbar sein müssen. Sie sind deshalb meistens nach der ISO 8859-Serie kodiert.
Ein Anwenderprogramm hat mehrere Möglichkeiten, die in externen CSS-Dateien verwendeten Zeichensätze festzustellen. Eine davon ist das Auslesen einer @charset-Regel.
Fast alle der heute im Internet verwendeten Daten/Dateien sind entweder in ASCII, UTF-16, UCS-4, oder in EBCDIC kodiert. Damit hat ein Anwenderprogramm die Möglichkeit, mindestens die @charset-Regel einer CSS-Datei zu lesen. Dadurch wiederum kennt es die Kodierung der CSS-Regeln und ist in der Lage, diese zu lesen.
Webautoren, die ihre Websites mit normalen lateinischen Zeichen erstellen, werden @charset in der Regel nicht benötigen.
Die Regel @charset
Eine Regel @charset kann nur in externen Stylesheets verwendet werden und in jedem Stylesheet nur einmal. Dort muß sie ganz am Dateianfang stehen, es dürfen ihr keine anderen Zeichen vorausgehen, auch keine Leerzeichen.
Syntax
@charset "<name>";
Komponenten
<name>- Name der verwendeten Zeichenkodierung, der immer vorhanden sein muss.
Code-Beispiel
@charset "ISO-8859-1";
Browserunterstützung
- Die Unterstützung der At-Regel
@charsetentspricht der Unterstützung der verschiedenen Zeichensätze durch die Browser.
Keine Eigenschaft und kein Selektor stehen in einem Stylesheet für sich allein. In der Praxis kann das Zusammenspiel zwischen verschiedenen Elementen und Selektoren einen nicht zu unterschätzenden Einfluss auf die Fähigkeiten der Browser haben. Bugs treten oft erst durch das Zusammenwirken mehrerer Eigenschaften an unterschiedlichen Elementen auf.
Woher die Kodierung wirklich kommt
Die At-Regel ist nicht die einzige Quelle für die Zeichenkodierung eines ausgelagerten Stylesheets, und sie ist auch nicht die stärkste. Ein Anwenderprogramm prüft mehrere Angaben in einer festen Reihenfolge und nimmt die erste, die es findet.
Ganz oben steht die Angabe im Übertragungsprotokoll, also das, was der Server im Kopf der Antwort mitschickt. Danach kommt eine Kennung am Dateianfang, die manche Werkzeuge setzen. Erst dann folgt diese At-Regel, und zuletzt die Angabe im einbindenden Dokument. Eine Regel im Stylesheet kann eine falsche Angabe des Servers also nicht heilen.
Praktisch heißt das: Wer Zeichenprobleme in einem Stylesheet hat, prüft zuerst, was der Server liefert. Die At-Regel ist die Absicherung für den Fall, dass keine der stärkeren Quellen etwas sagt.
Am wenigsten bekannt ist die letzte Stufe: Sagt keine der Quellen etwas, gilt die Kodierung des Dokuments, das das Stylesheet einbindet. Dasselbe Stylesheet kann damit in zwei Dokumenten unterschiedlich gedeutet werden, was bei Sonderzeichen in erzeugten Inhalten zu unterschiedlichen Ergebnissen führt.
Eine Regel mit ungewöhnlich strengen Formvorschriften
Die Schreibweise ist enger festgelegt als bei allem anderen in CSS. Die Regel muss als allererstes im Stylesheet stehen, ohne Kommentar davor und ohne Leerraum. Zwischen dem Namen und dem Anführungszeichen steht genau ein Leerzeichen, der Name der Kodierung steht in doppelten Anführungszeichen, und die Regel endet mit einem Semikolon.
Der Grund für diese Strenge liegt in der Aufgabe. Die Angabe muss gelesen werden, bevor feststeht, wie die Zeichen zu deuten sind, also bevor der Zeichensatz bekannt ist. Ein Anwenderprogramm liest dafür die ersten Bytes und vergleicht sie mit einem festen Muster. Jede Abweichung macht das Muster unerkennbar.
Deshalb gilt die Regel auch nur einmal je Datei und nicht für eingebundene Stylesheets: eine über
@import geholte Datei bringt ihre eigene Kodierung mit oder erbt sie, wenn sie keine nennt.
Zu beachten ist schließlich, dass die Angabe nur die Datei betrifft, in der sie steht. Ein Projekt mit mehreren Stylesheets braucht sie in jeder Datei, die eine abweichende Kodierung verwendet. Einheitlich kodierte Dateien und eine richtige Angabe des Servers machen die Regel dagegen entbehrlich, und genau deshalb sieht man sie heute selten.
Besonderheiten im Medientyp handheld
Diese At-Regel ist Teil des Standards CSS Mobile Profile 1.0 und unterliegt damit auch in Mobilgeräten allen relevanten Regeln aus CSS 2.1. Es ist aber bisher noch kein Browser eines Mobilgerätes bekannt, der @charset umsetzt.
Verwendete Standards
Dieser CSS-Referenz liegen folgende Spezifikationen zugrunde: CSS 1, CSS 2.1 CR und CSS Mobile.