根据W3C,CSS 可以在第一行设置其字符编码,@charset
说我应该放入@charset "UTF-8"
我制作的每个 CSS 是否有效,即使它只包含 ASCII 字符?
在我使用 UTF-8 声明它之后会有任何性能损失吗?
ps 我想不出一种方法来测试它。
不,作为无条件的陈述,这样说是无效的。如果您的文件仅包含 ASCII 字符,则它的字符编码很可能与 ASCII 兼容(EBCDIC 在那里使用得不多),因此该规则将是无害的,但只要文件保持为 ASCII 格式,它也毫无意义。
重要的是当一个非 ASCII 字符被插入到 CSS 文件中时会发生什么,无论出于何种原因。例如,它可能是在使用生成智能引号的程序编辑文件时插入的看似无辜的智能引号 (")。智能引号更有可能以 windows-1252 编码而不是 UTF-8 编码插入。因此,如果文件具有@charset "UTF-8"
规则,则分析问题可能会变得更加困难。
另一方面,如果您知道您的 CSS 文件将使用默认使用 UTF-8 编码的软件进行编辑,那么即使它只包含 ASCII 字符,也可以将其声明为 UTF-8 编码。例如,如果您某天编辑文件并添加类似 的声明content: "“foo”"
,您可能会忘记添加@charset
规则。
将编码声明为 UTF-8 没有任何开销。如果数据仅包含 ASCII 字符,则任何读取 UTF-8 的体面例程都将像简单读取 ASCII 一样快速处理字符。读取 UTF-8 字节流的例程必须首先检查该字节是否在 ASCII 范围内,如果是,则将其视为代表 ASCII 字符。