[47] 符号化は、文字列をバイト列に変換する操作です。 復号は、バイト列を文字列に変換する操作です。
[45] 符号化は、文字列を何らかのバイト列に変換する操作です。
[40] 符号化は、 符号位置のストリームストリームと文字符号化符号化について、 次のようにします >>1。
[46] この操作は、 Encoding Standard の規定する任意の文字符号化への符号化が必要な場合に使います。 これは後方互換性のため必要な場面に限定されています。 新しい文脈では UTF-8符号化などを用いるのが望ましいと考えられています >>1。
[33] 復号は、何らかのバイト列を文字列に変換する操作です。
[37] この操作は、引数として文字符号化を引き渡すことができます。 しかし入力に BOM が含まれていれば、そちらが優先されます (BOM sniffing)。
[3] 復号は、 バイトストリームストリームと符号化符号化について、 次のようにします >>1。
[31] 仕様書にはありませんが、符号化も返す必要があります。
[57] TextDecoder
インターフェイスの
decode
メソッド >>56
は、その復号の処理の部分について、引数として... を受け取り、次のようにします。
[71] この操作は、文字列の境界以外で分割されているかもしれない複数のバイト列を連続する1つの文字列として処理することや、 BOM の扱いを著者が指示することを想定し、他での処理よりも複雑となっています。
[84] 実際には、復号操作やUTF-8復号および関連各操作も、 入出力が1つのバイト列・文字列ではなくストリームとなる場合があり、 この操作と同じような形で実装することになると思われます。
TextDecoder
TextDecoder
TextDecoder
(ignoreBOM
)TextDecoder
replacement
fatal
)replacement
replacement
replacement
view-source:
replacement
<script charset>
2. 文書replacement
replacement
javascript:
replacement
replacement
replacement
application/manifest+json
replacement
payment-method-manifest
replacement
PushMessageData
replacement
document.cookie
replacement
reason
replacement
TextDecoder
replacement
text/event-stream
replacement
replacement
(fatal
)replacement
decodeURIComponent
Decode()
URIError
replacement
application/x-www-form-urlencoded
replacement
multipart/form-data
replacement
replacement
m3u8
replacement
data:
URL処理器replacement
[39] 復号操作は、 Encoding Standard の任意の文字符号化からの復号のために使えます。 これは後方互換性のため必要な場面に限られます。 新しい文脈では UTF-8復号を用いるのが望ましいと考えられています >>1。
[81] UTF-8復号は、復号操作を呼び出さず、 直接復号器を呼び出しています。
[80] HTML, XHR 文書応答 HTML,
XML, script
(古典スクリプト), CSS,
テキスト文書, XHR テキスト応答の各場面での文字コードの判定方法をまとめると、
次のようになります。
charset
(certain)<script charset>
<link charset>
<?xml-stylesheet charset?>
[89] charset sniffing に使うデータの長さについては、資源ヘッダーを参照。
[82] HTML Standard の HTML構文解析器は a known definite encoding を指定可能であり、 XHR の文書応答が HTML の場合にこれが使われます。 文書応答は、 HTML構文解析器の標準の (navigate で使われる) encoding sniffing algorithm のかわりに、独自の簡略化されたアルゴリズムを使っています。
[49] Encoding Standard は、符号化器と復号器を、 文字符号化ごとに定義されるクラス的なものと、 その実現値たる個別のオブジェクト的なものの両方の意味で使っています。
[52] 符号化器クラスや復号器クラスには、 走らせる処理と取扱器が定義されています。 また復号器クラスのBOMを持つは、当該復号器の文字符号化が UTF-8、UTF-16BE、UTF-16LE のいずれかなら真で、それ以外なら偽です。
[2] 符号化器オブジェクトや復号器オブジェクトは、 いくつかの文字符号化依存の状態を持ちます。 また、処理演算が定義されています。
[50] 更に、 Web IDLインターフェイスとして TextEncoder
と TextDecoder
があり、それぞれ (通常の Web IDL
のインターフェイス同様に) インターフェイスオブジェクト (≒ クラス)
とオブジェクトが存在しています。
[51] TextEncoder
や TextDecoder
のオブジェクトは、
いくつかの状態を持ちます。それには符号化器オブジェクトや復号器オブジェクトも含まれます。
同時には1つのオブジェクトだけを持ちますが、時に新しいオブジェクトに差し替えられることがあります。
[21] 符号化の符号化器クラスまたは復号器クラス器を、
ストリーム入力、ストリーム出力、
誤りモードモードについて走らせるには、
次のようにします >>15。
[27] 符号化器オブジェクトまたは復号器オブジェクトオブジェクトを、
字句字句、
ストリーム入力、ストリーム出力、
誤りモードモードについて処理するには、
次のようにします >>15。
[19] 符号化器や復号器の取扱器は、
ストリームと字句を入力とします。
次のいずれかを返します。 >>15
[48] 具体的なアルゴリズムは、文字符号化ごとに規定されています。
[75] fatal
は、 XML構文解析器 >>15、
BOMなしUTF-8復号または失敗、 TextDecoder
fatal
で使われます。
[78] replacement
はその他の復号が必要な場面で使われます。
例えばHTML構文解析器が該当します。
[74] 符号化器では実際には html
しか使われません。
かつては TextEncoder
で UTF-8 以外かつ fatal
が指定される可能性があったようですが、現在では UTF-8 しか指定できません。
また UTF-8 はすべてのUnicodeスカラー値を誤りなく符号化できます。
[76] Define 'continue' and 'break' statements (mikewest著, ) https://github.com/whatwg/infra/commit/8fbf990dcdb5f7ee80a85b569cba61a056fe1cc5
[77] Parse application/x-www-form-urlencoded using UTF-8 only (annevk著, ) https://github.com/whatwg/url/commit/3fe969679f78c92c353047661b0c4b6797f099f6
[90] Give clearer advice on hooks for standards (annevk著, ) https://github.com/whatwg/encoding/commit/b579018b406d7752f8b7a3aa9c2bc800519c6f1a
[92] Use UTF-8 decode without BOM for multipart/form-data (annevk, , ) https://github.com/whatwg/fetch/commit/7db8ac52245d6f0abaaeec6ae1cd96553c30b737