@charset

@charset CSS 规则指定样式表中使用的字符编码。当在某些 CSS 属性(如 content)中使用非 ASCII 字符时,此语法很有用。尽管 @charset 中的第一个字符是 @ 符号,但它不是一个 at-规则。它是一个特定的字节序列,只能放在样式表的开头。在其之前不允许出现任何其他字符,除了 Unicode 字节顺序标记。它也不遵循正常的 CSS 语法规则,例如使用引号或空格。

如果 @charset 未被识别为字符集声明,它将被解析为一个普通的 at-规则。 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";

正式语法

@charset "<charset>";
charset

一个 <string>,表示要使用的字符编码。它必须是 IANA 注册表 中定义的网络安全字符编码的名称,并且必须用双引号括起来,紧跟一个空格字符 (U+0020),并立即用分号终止。如果多个名称与一个编码相关联,则必须仅使用标记为首选的那个。

示例

有效和无效的字符集声明

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

规范

规范
层叠样式表级别 2 修订版 2 (CSS 2.2) 规范
# charset①

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅