blob: 7cf9f35ab122eb5e9e3adb79d3f1e986f0e27eb6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
---
title: '@charset'
slug: Web/CSS/@charset
tags:
- At-rule
- CSS
- Layout
- Reference
- Web
translation_of: Web/CSS/@charset
---
<div>{{CSSRef}}</div>
<p><a href="/ja/docs/CSS" title="CSS">CSS</a> の <strong><code>@charset</code></strong> <a href="/ja/docs/CSS/At-rule" title="At-rule">at-規則</a> は、スタイルシートで使う文字エンコーディングを定義します。この規則はスタイルシートの最初の要素でなければならず、これより前には文字を一切記述してはいけません。<a href="/ja/docs/CSS/Syntax#nested_statements" title="CSS/Syntax#nested_statements">入れ子の文</a> でないとしても、<a href="/ja/docs/CSS/At-rule#Conditional_Group_Rules" title="CSS/At-rule#Conditional_Group_Rules">条件付きグループ規則</a> では使えません。複数の <code>@charset</code> at-規則が定義されると、最初のものだけが使われます。HTML 要素の <code>style</code> 属性や、HTML ページの文字セットが関係している {{HTMLElement("style")}} 要素の中では使えません。</p>
<pre class="brush: css no-line-numbers">@charset "utf-8";</pre>
<p>この at-規則は、{{cssxref("content")}} のような CSS プロパティで非 ASCII 文字を使う際に便利です。</p>
<p>スタイルシートの文字エンコーディングを定義する方法は複数あるので、ブラウザは次の手順を順番に試します (そして 1 つでも結果が得られると止めます):</p>
<ol>
<li>ファイル先頭にある <a href="http://ja.wikipedia.org/wiki/%E3%83%90%E3%82%A4%E3%83%88%E9%A0%86%E3%83%9E%E3%83%BC%E3%82%AF" title="http://en.wikipedia.org/wiki/Byte_order_mark">Unicode byte-order</a> 文字 (BOM) の値</li>
<li><code>Content-Type:</code> HTTP ヘッダーの <code>charset</code> 属性、またはスタイルシートを送るのに使われたプロトコル内の同等のものから、得られた値</li>
<li>CSS の <code>@charset</code> at-規則</li>
<li>文書参照で定義されている文字エンコーディングを使用。{{HTMLElement("link")}} 要素の <code>charset</code> 属性です。この方式は HTML5 で廃止されており、使うべきではありません。</li>
<li>文書が UTF-8 だと仮定する</li>
</ol>
<h2 id="Syntax" name="Syntax">構文</h2>
<pre>@charset "UTF-8";
@charset "iso-8859-15";
</pre>
<p>ここでは:</p>
<dl>
<dt style="margin: 0 40px;"><em>charset</em></dt>
<dd style="margin: 0 40px;">使う文字エンコーディングを意味する {{cssxref("<string>")}} です。<a href="http://www.iana.org/assignments/character-sets">IANA-registry</a> で定義されているウェブセーフな文字エンコーディングの名前でなければなりません。この名前は必ず 1 文字分の空白文字 (U+0020) の後に続き、二重引用符で囲われ、セミコロン記号で終わる必要があります。もし 1 つのエンコーディングに複数の名前が関連付けられている場合には、<em>preferred</em> とマークされているものだけが使われる必要があります。</dd>
</dl>
<h3 id="Formal_syntax" name="Formal_syntax">正式な構文</h3>
<pre class="syntaxbox">{{csssyntax}}
</pre>
<h2 id="Examples" name="Examples">例</h2>
<pre class="brush: css">@charset "UTF-8"; /* スタイルシートのエンコーディングを Unicode UTF-8 にします*/
@charset 'iso-8859-15'; /* 無効です。正しくない引用符が使用されています */
@charset "UTF-8"; /* 無効です。at-規則より前に文字(空白)があります */
@charset UTF-8; /* 無効です。' か " がなく、文字セットは CSS の {{cssxref("<string>")}} ではありません */
</pre>
<h2 id="Specifications" name="Specifications">仕様</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
<th scope="col">策定状況</th>
<th scope="col">コメント</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{ SpecName('CSS2.1', 'syndata.html#x57', '@charset') }}</td>
<td>{{ Spec2('CSS2.1') }}</td>
<td>Initial definition</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの実装状況</h2>
<p>{{Compat("css.at-rules.charset")}}</p>
|