@charset

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Die @charset-Regel in CSS spezifiziert die Zeichenkodierung, die im Stylesheet verwendet wird. Diese Syntax ist nützlich, wenn nicht-ASCII-Zeichen in einigen CSS-Eigenschaften, wie content, verwendet werden. 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. Vorher sind keine anderen Zeichen, außer dem Unicode-Byte-Order-Mark, 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 sieht dieses Fallback-Verhalten als veraltet an und definiert es als eine nicht erkannte Altnorm, die bei einer Überprüfung der Stylesheet-Grammatik verworfen werden sollte.

Da es mehrere Möglichkeiten gibt, die Zeichenkodierung eines Stylesheets zu definieren, wird der Browser die folgenden Methoden in dieser Reihenfolge ausprobieren (und stoppen, sobald eine ein Ergebnis liefert):

  1. Der Wert des Unicode-Byte-Order-Zeichens, das am Anfang der Datei platziert wird.
  2. Der Wert, der durch das charset-Attribut des Content-Type:-HTTP-Headers oder das Äquivalent im verwendeten Protokoll zum Ausliefern des Stylesheets angegeben wird.
  3. Die @charset-CSS-Deklaration.
  4. Verwenden der Zeichenkodierung, die durch das referenzierende Dokument definiert wird: das charset-Attribut des <link>-Elements. Diese Methode ist veraltet und sollte nicht verwendet werden.
  5. Angenommen, dass das Dokument UTF-8 ist.

Syntax

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

Parameter

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 in doppelte Anführungszeichen gesetzt werden, genau einem Leerzeichen (U+0020) folgen und sofort mit einem Semikolon abgeschlossen werden. Wenn mehrere Namen mit einer Kodierung assoziiert sind, darf nur der verwendete Name mit bevorzugt gekennzeichnet sein.

Formale Syntax

Beachten Sie, dass die @charset-Regel nicht über Syntax geparst wird, sondern über eine spezifische Byte-Sequenz der folgenden Form:

@charset "<charset>";

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
CSS Syntax Module Level 3
# at-ruledef-charset

Browser-Kompatibilität

Siehe auch