[4] [DFN[[RUBYB[符号化の取得]@en[get an encoding]]]]は、
[[符号化ラベル]]から[[符号化][文字符号化]]を取得する操作です。

* 仕様書

[REFS[
- [5] '''[CITE@en[Encoding Standard]] ([TIME[2018-01-09 16:41:43 +09:00]]) <https://encoding.spec.whatwg.org/#concept-encoding-get>'''
- [13] [CITE@en-US[Encoding Standard]] ([TIME[2016-04-27 20:46:26 +09:00]] 版) <https://encoding.spec.whatwg.org/#output-encodings>
- [12] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-27 02:59:24 +09:00]] 版) <https://html.spec.whatwg.org/#change-the-encoding>
- [10] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-04-27 02:59:24 +09:00]] 版) <https://html.spec.whatwg.org/#prescan-a-byte-stream-to-determine-its-encoding>
]REFS]

* 性質

[14] [[符号化ラベル]]と期待される[[文字列]]を入力とし、[[文字符号化]]または[[失敗]]を返します。

[16] [[符号化ラベル]]は、 [CITE[Encoding Standard]] で規定されたもののいずれかでなければなりません。

;; [17] それ以外の任意の[[文字コード]]や[[文字コード]]名称の利用は認められておらず、
[[失敗]]となります。

[21] [[符号化ラベル]]は、[[ASCII大文字・小文字不区別]]です。

[15] [[符号化ラベル]]の前後に[[ASCII空白]]があっても構いません。

* 操作

[6] [[文字列]][VAR[ラベル]]について[DFN[[RUBYB[符号化を取得]@en[get an encoding]]]]するには、
次のようにします [SRC[>>5]]。


[FIG(steps)[
= [7] [VAR[ラベル]]の先頭と末尾の[[ASCII空白]]をすべて除去します。
= [8] [VAR[ラベル]]が[[符号化ラベル]]のいずれかと [[ASCII大文字・小文字不区別]]で一致する場合、
== [9] その[[符号化ラベル]]の表す[[符号化][文字符号化]]を返します。
= [19] それ以外の場合、
== [20] [[失敗]]を返します。
]FIG]

[18] [[符号化ラベル]]と[[符号化][文字符号化]]は、それぞれの項を参照。

* 後処理

[11] いくつかの処理では、
特定の[[符号化][文字符号化]]について、
[[ラベル][符号化ラベル]]が指定されても他の[[符号化][文字符号化]]と読み替えるとの特別な扱いが規定されています。

[FIG(table)[ [25] [[符号化][文字符号化]]の読み替え
: specified : 指定された[[符号化][文字符号化]]
: meta : [CODE(HTMLe)@en[meta]] [[要素]]での解釈 [SRC[>>12, >>10]]
: css : [[UTF-16]] 以外で書かれた [CODE[@charset]] や [CODE[encoding=""]] での解釈
: output : [[出力符号化]]としての解釈 [SRC[>>13]]

: specified : [[UTF-16BE]]
: meta : [[UTF-8]]
: output : [[UTF-8]]
: css : [[UTF-8]]

: specified : [[UTF-16LE]]
: meta : [[UTF-8]]
: output : [[UTF-8]]
: css : [[UTF-8]]

: specified : [[x-user-defined]]
: meta : [[windows-1252]]
: output : そのまま
: css : そのまま

: specified : [[replacement]]
: output : [[UTF-8]]
: meta : そのまま
: css : そのまま

: specified : その他
: meta : そのまま
: output : そのまま
: css : そのまま

]FIG]

* 文脈

[FIG(short list)[ [27] [[符号化を取得]]する場面
- [CODE[TextDecoder]]
- [[final charset]]
- [CODE[<link charset>]] による[[環境符号化]]の決定
- [CODE[<script charset>]] を使った[[古典スクリプトのfetch]]
- [[文字符号化宣言]]の解釈
]FIG]

[FIG(short list)[ [28] [[出力符号化]]を使う場面
- [[pick an encoding for a form]]
]FIG]

* 歴史

** 出力符号化

[22] [CITE@en[Fix #29: introduce output encoding for URL and HTML forms · whatwg/encoding@02c55f2]]
([TIME[2016-02-11 11:58:42 +09:00]] 版)
<https://github.com/whatwg/encoding/commit/02c55f23fc1968f68472d3e82e5da29c4fe0ec65>

[23] [CITE@en[Use the "get an output encoding" from the Encoding Standard · whatwg/url@a9197f7]]
([TIME[2016-02-11 12:02:55 +09:00]] 版)
<https://github.com/whatwg/url/commit/a9197f7714e6b125f1f760ca1aa661530261773c>

[24] [CITE@en[Update integration with Encoding Standard · whatwg/html@6a31c26]]
([TIME[2016-02-14 18:51:48 +09:00]] 版)
<https://github.com/whatwg/html/commit/6a31c26cf12e39dab1a488e75dd56c03d6786d39>

[26] [CITE@en[Regression: do not use "get an output encoding" for decoding · whatwg/html@c36f738]]
([TIME[2016-04-26 20:51:03 +09:00]] 版)
<https://github.com/whatwg/html/commit/c36f7384f1f617b13c68d28b89d850cb18ceadfb>

** [CODE[overrideMimeType]]

[1] [CITE@en[Fix overrideMimeType() again]]
([[annevk]]著, [TIME[2018-04-17 17:54:28 +09:00]])
<https://github.com/whatwg/xhr/commit/121cee50b6f51215f046266642964b4c53a02a7c>

[2] [CITE@en[Look at overrideMimeType() again · Issue #157 · whatwg/xhr]]
([TIME[2018-04-18 13:57:34 +09:00]])
<https://github.com/whatwg/xhr/issues/157>

[3] [CITE@en[Fix overrideMimeType() again by annevk · Pull Request #174 · whatwg/xhr]]
([TIME[2018-04-18 13:58:06 +09:00]])
<https://github.com/whatwg/xhr/pull/174>

[29] [CITE@en[Give clearer advice on hooks for standards]]
([[annevk]]著, [TIME[2018-04-25 21:22:45 +09:00]])
<https://github.com/whatwg/encoding/commit/b579018b406d7752f8b7a3aa9c2bc800519c6f1a>