aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/css/@charset/index.html
blob: f74627226f7ad8121aab4feaca8425e006ddd6d1 (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
---
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("&lt;string&gt;")}} です。<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>

{{csssyntax}}

<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("&lt;string&gt;")}} ではありません */
</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>