/
289.txt
185 lines (145 loc) · 7.34 KB
/
289.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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
[7] [DFN[[RUBYB[[[文字符号化]]]@en[character encoding]]]]は、
[[文字]]を[[符号化]]する一連の規則の集合です。
「[[文字コード]]」と同じように曖昧に使われていますが、
「[[文字コード]]」とは違って単一の[[文字]]の[[符号化]]を指すことはあまりなく、
[[符号化]]の方式全体を指しているようです。
* 仕様書
[REFS[
- [14] [CITE@en-US[Encoding Standard]] ([TIME[2016-04-27 20:46:26 +09:00]] 版) <https://encoding.spec.whatwg.org/>
-- [15] [CITE@en-US[Encoding Standard]] ([TIME[2016-07-29 16:12:31 +09:00]]) <https://encoding.spec.whatwg.org/#encodings>
-- [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]
* 意味
[16] [DFN[[RUBYB[符号化]@en[encoding]]]]は、
[[スカラー値][Unicodeスカラー値]]の[[列]]から[[バイト列]]へ
(やその逆方向) の[[写像]]を定義するものです [SRC[>>15]]。
* 特性
[8] [[文字符号化]]は、次のような[[特性]]を持ちます。
[FIG(members list)[
: [F[名前][符号化名]] : [[Encoding Standard]] において[[符号化][文字符号化]]を識別する文字列です。
[[符号化][文字符号化]]は、[F[名前]]を1つ持ちます [SRC[>>15]]。
: [F[[[ラベル][符号化ラベル]]群]] : [[Encoding Standard]] において[[符号化][文字符号化]]に紐付けられた文字列群です。
[[符号化][文字符号化]]は、[[ラベル][符号化ラベル]]を1つ[[以上]]持ちます [SRC[>>15]]。
: [F[[[符号化器]]クラス]] :
: [F[[[復号器]]クラス]] :
]FIG]
[9] [[文字符号化]]には次のような分類があります。
[FIG(list short)[
- [[ASCII互換文字符号化]]
- [[レガシー符号化]]
- [[UTF-16符号化]]
]FIG]
** 単一バイト符号化
[18] [CITE[Encoding Standard]] の規定する[[符号化][文字符号化]]の多数は、
[DFN[[RUBYB[単一バイト符号化]@en[single-byte encoding]]]]です。[[単一バイト符号化]]においては、
[[ASCIIバイト]]と[[ASCII文字]]に対応関係があり、
[[非ASCIIバイト]]に[[非ASCII文字]]が割り当てられています。
[22] [[非ASCIIバイト]]と[[非ASCII文字]]の対応関係は、
[CITE[Encoding Standard]] で変換表が定義されています。
[19] [[非ASCIIバイト]]のいくつかにはどの[[Unicode符号位置]]も割り当てられていない場合があります。
そのような[[バイト]]が現れたら、[[複合器]]は[[誤りモード]]に従い
[CODE[U+FFFD]] と解釈するか、[[誤り]]を返します。
[20] 当然ながら、 [[Unicode符号位置]]の大多数は[[単一バイト符号化]]で表現できません。
そのような[[符号位置]]が現れたら、[[符号位置]]は[[誤りモード]]に従い[[文字参照]]を出力するか、
[[誤り]]を返します。[[文字参照]]はすべて[[ASCII文字]]で表せます。
[23] [[ISO-8859-8-I]] は、 [[ISO-8859-8]] と同じものですが、
[[レンダリング]]で特別に処理されることになっています。
[CITE[Encoding Standard]] では専用の変換表がなく、
[[ISO-8859-8]] のものを使うことになっています。
[21] [[x-user-defined]] は、構造上は[[単一バイト符号化]]ですが、
[CITE[Encoding Standard]] では変換表ではなく[[アルゴリズム]]的に変換する別種の[[符号化][文字符号化]]として扱っています。
[FIG(short list)[ [24] [[単一バイト符号化]]の一覧
- [[IBM866]]
- [[ISO-8859-2]]
- [[ISO-8859-3]]
- [[ISO-8859-4]]
- [[ISO-8859-5]]
- [[ISO-8859-6]]
- [[ISO-8859-7]]
- [[ISO-8859-8]]
- [[ISO-8859-8-I]]
- [[ISO-8859-10]]
- [[ISO-8859-13]]
- [[ISO-8859-14]]
- [[ISO-8859-15]]
- [[ISO-8859-16]]
- [[KOI8-R]]
- [[KOI8-U]]
- [[macintosh]]
- [[windows-874]]
- [[windows-1250]]
- [[windows-1251]]
- [[windows-1252]]
- [[windows-1253]]
- [[windows-1254]]
- [[windows-1255]]
- [[windows-1256]]
- [[windows-1257]]
- [[windows-1258]]
- [[x-mac-cyrillic]]
- [[x-user-defined]]
]FIG]
** 複数バイト符号化
[27] [[ISO-2022-JP]] 以外の[[符号化][文字符号化]]は、
[[スカラー値列]]を[[符号化]]したものと、
その[[スカラー値列]]を任意の[[スカラー値列]]の[[リスト]]に分割し、
それぞれを[[符号化]]してから連結したものが等しくなるという性質があります。
[FIG(short list)[ [28] 複数バイト符号化の一覧
- [[UTF-8]]
- [[GBK]]
- [[gb18030]]
- [[Big5]]
- [[EUC-JP]]
- [[ISO-2022-JP]]
- [[Shift_JIS]]
- [[EUC-KR]]
- [[UTF-16BE]]
- [[UTF-16LE]]
]FIG]
** 特別な符号化
[11] いくつかの[[符号化][文字符号化]]は、[[ラベル][符号化ラベル]]が指定されても他の[[符号化][文字符号化]]と読み替えるとの特別な扱いが規定されています。
[FIG(table)[ [25] [[符号化][文字符号化]]の読み替え
: specified : 指定された[[符号化][文字符号化]]
: meta : [CODE(HTMLe)@en[meta]] [[要素]]での解釈 [SRC[>>12, >>10]]
: output : [[出力符号化]]としての解釈 [SRC[>>13]]
: specified : [[UTF-16BE]]
: meta : [[UTF-8]]
: output : [[UTF-8]]
: specified : [[UTF-16LE]]
: meta : [[UTF-8]]
: output : [[UTF-8]]
: specified : [[x-user-defined]]
: meta : [[windows-1252]]
: output : そのまま
: specified : [[replacement]]
: output : [[UTF-8]]
: meta : そのまま
: specified : その他
: meta : そのまま
: output : そのまま
]FIG]
[26] ほとんどの[[符号化][文字符号化]]は、[[名前][符号化名]]が[[ラベル][符号化ラベル]]の1つになっています。
[[replacement]] だけは、 [[replacement]] という[[ラベル][符号化ラベル]]は存在していません。
* 演算
[17] [[符号化器]]、[[復号器]]を参照。
* 他の定義
[5] [[RFC 7303]] では、特定の [[XML MIME実体]]で実際に用いられている [[MIME charset]]
のことを[DFN[[RUBYB[[[文字符号化]]]@en[character encoding]]]]
(文脈で明確な場合は[DFN[[RUBYB[[[符号化]]]@en[encoding]]]]) と呼んでいます [SRC[>>4]]。
;; [6] [CODE(MIME)@en[[[charset]]]] [[引数]]や [CODE(XMLa)@en[[[encoding]]]]
[[擬似属性]]に指定されている値ではなく、実際に[[符号化]]に用いられているものを指しています。
[REFS[
- [4] [CITE@en[RFC 7303 - XML Media Types]] ([TIME[2014-07-07 20:56:43 +09:00]] 版) <http://tools.ietf.org/html/rfc7303#section-2.2>
]REFS]
* 歴史
[1] [CITE@en[(X)HTML5 Tracking]]
([TIME[2009-10-24 10:48:55 +09:00]] 版)
<http://html5.org/tools/web-apps-tracker?from=4306&to=4307>
[2] [CITE@en[Character Model for the World Wide Web 1.0: Fundamentals]]
( ([TIME[2005-02-15 14:24:00 +09:00]] 版))
<http://www.w3.org/TR/charmod/#def-CES>
[3] [CITE[Core:Character Encodings]]
( ([TIME[2014-07-22 10:45:59 +09:00]] 版))
<http://alcme.oclc.org/openurl/servlet/OAIHandler?verb=ListRecords&metadataPrefix=oai_dc&set=Core:Character+Encodings>