[13] [CODE(HTMLe)@en[[[script]]]] [[要素]]の [DFN[[CODE(HTMLa)@en[charset][<script charset>]]]]
[[属性]]は、[[外部スクリプト資源]]の[[文字コード]]を表します。

* 代替

[14] この[[属性]]自体は[[廃止]]されています。 [[UTF-8]]
以外の[[文字コード]]は[MUST[禁止]]されており、
それに従っている限り、この[[属性]]の出番はありません。
基本的には過去の[[文書]]との互換性のためのものなので、
新しい[[文書]]では使うべきではありません。

* 仕様書

[REFS[
- [1] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-16 01:30:20 +09:00]] 版) <https://html.spec.whatwg.org/#the-script-element>
-- [3] '''[CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-02-21 07:50:23 +09:00]] 版) <https://html.spec.whatwg.org/#attr-script-charset>'''
]REFS]

* 意味

[6] [CODE(HTMLa)@en[[[charset]]]] [[属性]]は、
[[外部スクリプト資源]]の[[文字符号化]]を指定するものです [SRC[>>3]]。

[HISTORY[
[16] かつては[[ヒント]]とも考えられていましたが、
実際には[[文字コード]]の決定に強く関わる指定となっています。
]HISTORY]

* 属性値

[22] [CODE[UTF-8]] ([[ASCII大文字・小文字不区別]]) でなければ[MUST[なりません]]
[SRC[>>3]]。

[HISTORY[
[11] [[属性値]]は、[[符号化ラベル]]に [[ASCII大文字・小文字不区別]]で[[一致]]するものでなければ[['''なりません''']]
[SRC[>>3]]。

[12] [[属性値]]は、[[外部スクリプト資源]]の[F[[[Content-Typeメタデータ]]]]の
[F[[CODE(MIME)@en[[[charset]]]]]] の値 (あれば) と同じ[[符号化]]を表さなければ[['''なりません''']]
[SRC[>>3]]。
]HISTORY]

* 文脈

[8] [CODE(HTMLe)@en[[[script]]]] [[要素]]の種別が[[古典スクリプト]]の時、
指定できました。

[10] ただし [CODE(HTMLa)@en[[[src]]]] [[属性]]が指定されていなければ、
指定しては[['''なりません''']] [SRC[>>3]]。

[9] [CODE(HTMLe)@en[[[script]]]] [[要素]]の種別が[[モジュールスクリプト]]や[[データブロック]]の時は、
[CODE(HTMLa)@en[[[charset]]]] [[属性]]を使っては[['''なりません''']] [SRC[>>3]]。

;; [23] 厳密には[TIME[2017年10月][2017-10]]の [[UTF-8]] 以外を禁止する変更の際、
これらの制約は廃止されています (全体として[[廃止]]の機能なので、
細かい制約は不要という判断なのでしょう)。 

* 処理

[17] [CODE(HTMLe)@en[[[script]]]] を参照。

[28] なお、初回処理時の値が使われるので、動的に変更しても、意味を持ちません [SRC[>>3]]。

* [CODE(DOMi)@en[HTMLScriptElement]] インターフェイス [CODE(DOMa)@en[charset]] 属性

[18] [CODE(DOMi)@en[[[HTMLScriptElement]]]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[[[charset]]]]]] [[IDL属性]]は、
[CODE(HTMLa)@en[[[charset]]]] [[内容属性]]を[[反映]]しなければ[['''なりません''']]
[SRC[>>1]]。これは[[文字列]]として[[反映]]するものです。

[24] この[[IDL属性]]は[[廃止]]状態にあります。しかし [[Webブラウザー]]は[[後方互換性]]のために実装しなければ[MUST[なりません]]。

* 歴史

** HTML4

[REFS[
- [2] [[HTML4]]
-- [CITE[18.2.1 The [CODE(HTMLe)[SCRIPT]] element]]
<https://www.w3.org/TR/html4/interact/scripts.html#edef-SCRIPT>
]REFS]

[4] この属性は [CODE(SGML)[%[[Charset]]]]
です。つまり、 [[IETF]] [[charset]] を指定します。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。

[5] この属性は省略可能です。

[7] [CODE(HTMLe)[script]] 要素では、要素の[[内容]]には関係しません
[SRC[HTML 4 18.2.1]]。逆に言えば指定してもいいけど無視されるということでしょうか。

** モジュールスクリプト

[15] 2016年に [[HTML Standard]] で規定された[[モジュールスクリプト]]
([[JavaScriptモジュール]]) では、 [CODE(HTMLa)@en[[[charset]]]]
[[属性]]は使わないこととされました。もはや [[Web]]
の[[文字コード]]は [[UTF-8]] に統一されており、新機能で過去の[[文字コード]]に対応する必要はないとの判断です。

;; [[ワーカー]]導入時に [[UTF-8]] のみ対応とした判断を踏襲しています。

[19] [CITE@en[Clarify script encoding fallback]]
( ([[Resseguie]]著, [TIME[2016-06-15 17:25:44 +09:00]]))
<https://github.com/whatwg/html/commit/ffbf252f5b1c9793fd59de9e64045ddebfabf982>

[20] [CITE@en[Require UTF-8]]
([[sideshowbarker]]著, [TIME[2017-10-06 19:09:17 +09:00]])
<https://github.com/whatwg/html/commit/fae77e3c558b9f083dfb9086752863a4789268f5>

[21] [CITE@en[Require UTF-8]]
([[sideshowbarker]]著, [TIME[2017-10-06 19:09:17 +09:00]])
<https://github.com/whatwg/html/commit/fae77e3c558b9f083dfb9086752863a4789268f5>

[25] [CITE@en[Make <script charset> non-conforming · Issue #3004 · whatwg/html]]
([TIME[2017-11-03 19:52:17 +09:00]])
<https://github.com/whatwg/html/issues/3004>

[26] [CITE@en[Require utf-8 when specifying character encoding by sideshowbarker · Pull Request #3091 · whatwg/html]]
([TIME[2017-11-03 19:52:31 +09:00]])
<https://github.com/whatwg/html/pull/3091>