

“@charset”ルール
“@charset”ルールはスタイルシートの文字エンコーディングを指定します。
“@charset”ルールによって指定される文字エンコーディングは“代替エンコーディング”であり、BOMやHTTPヘッダーで文字エンコーディングがわからなかった場合にだけ使用されます。
“@charset”ルールはCSSの中で一番最初に記述されなければならず、“@charset”ルールよりも前にはBOMを除いてどのような文字も記述してはいけません。
他の文字よりも後に記述された“@charset”ルールや複数の“@charset”ルールが記述された場合の2個目以降の“@charset”ルールは無視されます。
“@charset”ルールは文字エンコーディングを判断するためだけに使用されます。
現代のウェブ上での既定の文字エンコーディングはUTF-8であるため、CSSもUTF-8で作成し、“@charset”ルールでも“utf-8”を指定することが推奨されます。
“@charset”ルールはCSS2では@ルールの一つですが、CSS3では@ルールの形をしたバイト列(“40 63 68 61 72 73 65 74 20 22 … 22 3B”)としており、厳密には@ルールではありません。
“@charset”ルールの構文
“@charset”ルールは厳密に、“@charset”、1個の半角スペース(U+0020)、二重引用符(“"”)に囲まれた文字エンコーディングの名前、セミコロン(“;”)の順に記述しなければなりません。
@charset "〚文字エンコーディング〛";
文字エンコーディングの名前は16進数のASCIIコードで“0”から“21”と“23”から“7F”で表される文字(ASCII文字のうち二重引用符(“"”)以外)で“Encoding Living Standard”仕様書に記載されているラベル名を記述します。
以下は文字エンコーディングの一例です。
エンコーディング名 | 説明 |
---|---|
utf-8 | UTF-8 |
shift_jis | Shift_JIS |
euc_jp | Extended_UNIX_Code_Packed_Format_for_Japanese |
なお、“utf-16be”もしくは“utf-16le”を指定した場合は“utf-8”として扱われます。