@charset

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

@charset CSS 規則指定樣式表中使用的字元編碼。當在某些 CSS 屬性(如 content)中使用非 ASCII 字元時,此語法非常有用。儘管 @charset 中的第一個字元是 @ 符號,但它不是一個 at-rule。它是一個特定的位元組序列,只能放置在樣式表的開頭。除了 Unicode 位元組順序標記之外,不允許在其前面出現其他字元。它也不遵循正常的 CSS 語法規則,例如引號或空白的使用。

如果 @charset 未被識別為字元集宣告,則它會被解析為一個普通的 at-rule。CSS 語法模組廢棄了這種回退行為,將其定義為當樣式表進行語法檢查時應丟棄的無法識別的舊規則。

由於有多種方法可以定義樣式表的字元編碼,瀏覽器將按以下順序嘗試以下方法(並在其中一種方法產生結果時立即停止):

  1. 檔案開頭放置的 Unicode 位元組順序字元的值。
  2. Content-Type: HTTP 頭部的 charset 屬性或用於提供樣式表的協議中的等效屬性所賦的值。
  3. @charset CSS 宣告。
  4. 使用引用文件定義的字元編碼:<link> 元素的 charset 屬性。此方法已過時,不應使用。
  5. 假定文件為 UTF-8。

語法

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

引數

字元集

一個 <string>,表示要使用的字元編碼。它必須是 IANA 登錄檔中定義的網路安全字元編碼的名稱,並且必須用雙引號括起來,緊跟一個空格字元 (U+0020),並立即以分號終止。如果多個名稱與一個編碼相關聯,則只能使用標記為首選的名稱。

正式語法

請注意,@charset 規則不是透過語法解析的,而是透過以下形式的特定位元組序列解析的:

@charset "<charset>";

示例

有效和無效的字元集宣告

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 */

規範

規範
CSS 語法模組第 3 級
# at-ruledef-charset

瀏覽器相容性

另見