-
Notifications
You must be signed in to change notification settings - Fork 4
/
932.txt
85 lines (61 loc) · 3.71 KB
/
932.txt
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
80
81
82
83
84
85
* 仕様書
[REFS[
- [2] [CITE@en[Infra Standard]] ([TIME[2017-08-17 16:48:46 +09:00]]) <https://infra.spec.whatwg.org/#isomorphic-encode>
- [10] [CITE@en[Infra Standard]] ([TIME[2017-08-17 16:48:46 +09:00]]) <https://infra.spec.whatwg.org/#isomorphic-decode>
]REFS]
* 演算
[3] [[文字列]][VAR[データ]]の[DFN[[RUBYB[同型符号化]@en[isomorphic encode]]]]は、
次のようにします [SRC[>>2]]。
[FIG(steps)[
= [4] [VAR[出力]]を、新しい[[空バイト列]]に設定します。
= [5] [VAR[データ]]の各[[符号位置]][VAR[符号位置]]について、順に、
== [6] [VAR[出力]]の末尾に、値が[VAR[符号位置]]の[[バイト]]を追加します。
= [7] [VAR[出力]]を返します。
]FIG]
;; [8] この[[演算]]は、[VAR[データ]]が [CODE[U+0100]] [[以上]]の[[符号位置]]を含まないときにしか使えません。
-*-*-
[11] [[バイト列]][VAR[データ]]の[DFN[[RUBYB[同型復号]@en[isomorphic decode]]]]は、
次のようにします [SRC[>>10]]。
[FIG(steps)[
= [12] [VAR[出力]]を、新しい[[空文字列]]に設定します。
= [13] [VAR[データ]]の各[[バイト]][VAR[バイト]]について、順に、
== [14] [VAR[出力]]の末尾に、値が[VAR[バイト]]の[[符号位置]]を追加します。
= [15] [VAR[出力]]を返します。
]FIG]
* 文脈
[18] [[同型符号化]]は、次の場面で使われています。
[FIG(short list)[ [19] [[同型符号化]]の[[応用]]
- [CODE[btoa]]
- [[MIME型をバイト列に符号化]]
- [CODE[Content-Length]]
- [CODE[Referer:]]
- [CODE[Location:]]
]FIG]
[20] この他に、[[仕様書]]では[[UTF-8符号化]]や[[UTF-8復号]]となっていても、
実質的に[[同型符号化]]や[[同型復号]]を表していることがあります。
[22] [[同型復号]]の用法は、[[復号][復号 (符号化)]]も参照。
* 関連
[9] [[Perl]] は[[バイト列]]を[[文字列]]として扱うことができます。これは[[同型復号]]に相当する暗黙の[[型変換]]を伴っています。
* 歴史
[1] [CITE@en[Define isomorphic encode and decode]]
([[annevk]]著, [TIME[2017-08-16 01:53:57 +09:00]])
<https://github.com/whatwg/infra/commit/8d7447e5462f2cd104b7bbe7a719227be80921cf>
[16] [CITE@en[byte sequence <> string by annevk · Pull Request #146 · whatwg/infra]] ([TIME[2017-08-24 17:57:05 +09:00]]) <https://github.com/whatwg/infra/pull/146>
[17] 実装によっては [[ISO 8859-1]] や [[Latin1]] という名称の[[文字コード]]としてこの[[符号化]]と[[復号]]が実装されていることがありますが、
その意味には混乱があるため (例えば [[Web]] では [[Windows-1252]] の意)、
[[演算]]名に使うことは避けられているようです。
[21] [CITE@en[Define the HTTP Refresh header]]
([[annevk]]著, [TIME[2017-08-10 01:57:03 +09:00]])
<https://github.com/whatwg/html/commit/7e9f6b6ffe2119f43f909f71773a25a7e8a61ca7>
[23] [CITE@en[28339 – <meta refresh> Specify Refresh HTTP header]]
([TIME[2017-08-29 00:18:05 +09:00]])
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=28339>
[24] [CITE@en[Allow Range header to be set by APIs]]
([[jakearchibald]]著, [TIME[2018-05-30 02:00:06 +09:00]])
<https://github.com/whatwg/fetch/commit/819d8c9d6617986a831ecd9cf21c34ba9589a890>
[25] [CITE@en[Editorial: replace UTF-8 encode with isomorphic encode]]
([[annevk]]著, [TIME[2018-05-28 21:03:01 +09:00]])
<https://github.com/whatwg/fetch/commit/ffbaefb5c4f68b9d619e9db6491fd665a30a2ffb>
[26] [CITE@en[Editorial: replace UTF-8 encode with isomorphic encode by annevk · Pull Request #742 · whatwg/fetch]]
([TIME[2018-06-02 09:00:47 +09:00]])
<https://github.com/whatwg/fetch/pull/742>