@charset

Die @charset-Regel in CSS legt die Zeichenkodierung fest, die im Stylesheet verwendet wird. Diese Syntax ist nützlich, wenn nicht-ASCII-Zeichen in einigen CSS-Eigenschaften verwendet werden, wie z.B. content. Obwohl das erste Zeichen in @charset das @-Symbol ist, handelt es sich nicht um eine At-Regel. Es ist eine spezifische Byte-Sequenz, die nur ganz am Anfang eines Stylesheets platziert werden kann. Keine anderen Zeichen, außer dem Unicode-Byte-Order-Mark, sind davor erlaubt. Es folgt auch nicht den normalen CSS-Syntaxregeln wie der Verwendung von Anführungszeichen oder Leerzeichen.

Wenn ein @charset nicht als Charset-Deklaration erkannt wird, wird es als normale At-Regel geparst. Das CSS-Syntax-Modul hebt dieses Fallback-Verhalten auf und definiert es als unerkannte Legacy-Regel, die beim Grammatik-Checken eines Stylesheets entfernt werden soll.

Da es mehrere Methoden gibt, um die Zeichenkodierung eines Stylesheets festzulegen, versucht der Browser die folgenden Methoden in der folgenden Reihenfolge (und stoppt, sobald eine ein Ergebnis liefert):

  1. Der Wert des Unicode-Byte-Order-Zeichens, das am Anfang der Datei platziert ist.
  2. Der Wert, der durch das charset-Attribut des Content-Type:-HTTP-Headers oder das entsprechende Attribut im verwendeten Protokoll zur Übertragung des Stylesheets angegeben wird.
  3. Die @charset-CSS-Deklaration.
  4. Verwendung der im referenzierenden Dokument definierten Zeichenkodierung: das charset-Attribut des <link>-Elements. Diese Methode ist veraltet und sollte nicht verwendet werden.
  5. Annahme, dass das Dokument UTF-8 ist.

Syntax

css
@charset "UTF-8";
@charset "iso-8859-15";

Formale Syntax

@charset "<charset>";
charset

Ein <string>, das die zu verwendende Zeichenkodierung angibt. Es muss der Name einer web-sicheren Zeichenkodierung sein, die im IANA-Register definiert ist und muss doppelt angeführt werden. Es muss genau ein Leerzeichen (U+0020) folgen und sofort mit einem Semikolon abgeschlossen werden. Wenn mehrere Namen mit einer Kodierung verknüpft sind, darf nur derjenige verwendet werden, der als bevorzugt markiert ist.

Beispiele

Gültige und ungültige Charset-Deklarationen

css
@charset "UTF-8"; /* Set the encoding of the style sheet to Unicode UTF-8 */
css
@charset 'iso-8859-15'; /* Invalid, wrong quotes used */
@charset  "UTF-8"; /* Invalid, more than one space */
 @charset "UTF-8"; /* Invalid, there is a character (a space) before the declarations */
@charset UTF-8; /* Invalid, the charset is a CSS <string> and requires double-quotes */

Spezifikationen

Specification
Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification
# charset①

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch