-
Notifications
You must be signed in to change notification settings - Fork 4
/
372.txt
1584 lines (1253 loc) · 84.8 KB
/
372.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
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
[55] [DFN[[[charset]]]] は、[[文字コード]]を表す短い識別子 (によって表される[[文字コード]])
です。
* 仕様書
[REFS[
- [915] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-3.1.1.2>
- [77] [CITE@en[RFC 2295 - Transparent Content Negotiation in HTTP]] ([TIME[2014-08-31 19:36:42 +09:00]] 版) <http://tools.ietf.org/html/rfc2295#section-5.4>
- [88] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-01-16 08:47:54 +09:00]] 版) <https://html.spec.whatwg.org/#attr-meta-charset>
]REFS]
* 呼称
[56] [[charset]] は、「ちゃーせっと」、「きゃらせっと」などと発音されるようです。
* 定義
[846]
>
A charset is a method of mapping a sequence of octets to a
sequence of abstract characters. A charset is, in effect, a
combination of one or more CCSs with a CES. Charset names are
registered by the IANA according to procedures documented in [RFC2278]. <NONE>
> Many protocol definitions use the term "character set" in their
descriptions. The terms "charset" or "character encoding scheme"
are strongly preferred over the term "character set" because
"character set" has other definitions in other contexts and this
can be confusing.
;; [CITE@en[RFC 3536 - Terminology Used in Internationalization in the IETF]] ([TIME[2011-01-29 02:14:52 +09:00]] 版) <http://tools.ietf.org/html/rfc3536#page-6>
* 構文
[916] [[HTTP]] においては、 [[charset名]]は[[字句]]で、[[大文字・小文字不区別]]とされています [SRC[>>846]]。
** quoted-string
[116] [[MIME]]/[[HTTP]] で使われる[[媒体型]]の [CODE[charset]]
引数の指定方法では、引数値は他の引数同様に
[CODE(ABNF)[[[value]]]]
です。つまり、 [CODE(ABNF)[[[token]]]]
または [CODE(ABNF)[[[quoted-string]]]]
を1つ使って指定できます。
例:
- [CODE(MIME)[charset=US-ASCII]]
- [CODE(MIME)[charset="US-ASCII"]]
- [CODE(MIME)[charset="US\-ASCII"]]
(すべて等価)
[117] [[WinIE6]] は引用符があるものに対応していないみたいです。
簡単な傍証:
= [CODE(HTTP)[charset=iso-8859-1]] の実体を表示
= 次のどちらか:
-- [CODE(HTTP)[charset=iso-2022-jp]] の実体を表示
-- [CODE(HTTP)[charset="iso-2022-jp"]] の実体を表示
引用符をつけていると見事に化けます。
もちろんこのような杜撰な実装は規格不適合です。
* 文脈
[75] [[MIME]] では、 [[RFC 2231]] で拡張された[[引数]]の値の構文で登録された
[[IANA charset]] 名を使うことができるとされています。
* ほわっといず charset?
char は[[文字]] character の略として業界(どこ)では頻用される語句です。
set はその通りセットですが、数学の set と同じ(ような)意味で、
正統的(謎)には[[集合]]と訳します。
ですから、そのまま解釈すると文字集合ということになります。
しかし、この辺の用語の混乱は激しくて、大抵は単なる文字の集合
のことだけではなくて、その文字の集合に数字を割り振ったものとか、
その数字と計算機上の表現の対応の定義とか、そういう
(文字を計算機で扱うのに必要な) 余計な色々までひっくるめて、
charset と呼びます。
* MIME charset
[[MIME]] が定義する charset が、一番有名でしょう。
RFC 2045 〜 2049 には charset という語の定義は出てきませんが、
"charset" parameter は文字集合 character set を示すパラメーター
らしいので、 character set = charset と考えて良いと思われます、
** 文字集合 Character Set (RFC 2045 2.2)
[PRE[
The term "character set" is used in MIME to refer to a method of
converting a sequence of octets into a sequence of characters. Note
that unconditional and unambiguous conversion in the other direction
is not required, in that not all characters may be representable by a
given character set and a character set may provide more than one
sequence of octets to represent a particular sequence of characters.
]PRE]
用語「character set」 「文字集合」 は MIME ではオクテット列を
文字列に変換する方法を表します。なお、逆方向への無条件かつ曖昧でない
変換は必須ではありません。全ての文字が当該文字集合で表現可能でない
かもしれませんし、その文字集合で特定の文字列を表現するのに
複数のオクテット列が使えても構いません。
[PRE[
This definition is intended to allow various kinds of character
encodings, from simple single-table mappings such as US-ASCII to
complex table switching methods such as those that use ISO 2022's
techniques, to be used as character sets. However, the definition
associated with a MIME character set name must fully specify the
mapping to be performed. In particular, use of external profiling
information to determine the exact mapping is not permitted.
]PRE]
この定義は、 US-ASCII のように簡単な単一表対応付けから
ISO 2022 技術を使うものまで、様々な種類の文字符号化を文字集合として
使うことを認めるものです。しかし、 MIME 文字集合名に関連付けられる定義は
使われる対応付けを完全に規定するものでなければなりません。
特に、正確な対応付けに外部プロファイル情報を使うのは認められません。
[PRE[
NOTE: The term "character set" was originally to describe such
straightforward schemes as US-ASCII and ISO-8859-1 which have a
simple one-to-one mapping from single octets to single characters.
Multi-octet coded character sets and switching techniques make the
situation more complex. For example, some communities use the term
"character encoding" for what MIME calls a "character set", while
using the phrase "coded character set" to denote an abstract mapping
from integers (not octets) to characters.
]PRE]
参考: 用語「character set」「文字集合」は元々は US-ASCII や ISO-8859-1
のように単一オクテットと単一文字の一対一の単純な対応付けを持つ
分かりやすい方式を指していました。多オクテット符号化文字集合や
切り替え技術のおかげで状況が複雑になりました。例えば、
用語「文字符号化 character encoding」を MIME で言うところの
「文字集合 character set」に使い、語句「符号化文字集合 coded character set」
で整数 (オクテットで無しに) から文字への抽象的な対応付けを示す
世間もあります。
(訳注: [[CES]]/[[CCS]] 論のことらしい。 Ned じーさんは、
CCS/CES 論は charset の1種ではあるが charset はそれに限定されない
とおっしゃってます。)
[66]
[CITE[Re: Media types for RDF languages N3 and Turtle]] ([[Sean B. Palmer]] 著, [CODE[2007-12-17 15:51:29 +09:00]] 版) <http://permalink.gmane.org/gmane.ietf.types/953>
* IANA charset
[103] [DFN[IANA [RUBYB[文字符号化登録簿]@en[Character Sets registry]]]]は、[[文字符号化]]
([[charset]]) の名前に関する [[IANA]] による [[IETF]] の登録簿 ([[IANAREG]]) です。
[917] [[charset名]]は、 [[RFC 2978]] により [[IANA]] に登録する[RUBYB[べき]@en[ought to]]です
[SRC[>>846]]。
[REFS[
- [104] [CITE@en[CHARACTER SETS]]
<http://www.iana.org/assignments/character-sets>
]REFS]
* [CODE(MIME)@en[text/*]] の [CODE(MIME)@en[charset]] 引数
[885] [[MIME型]] [CODE(MIME)@en[[[text/[VAR[*]]]]]] の [CODE(MIME)@en[[[charset]]]] [[引数]]については、
[CODE(MIME)@en[[[text/[VAR[*]]]]]] を参照してください。
** 仕様書
[REFS[
- [265] [CITE@en[RFC 2046 - Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types]] ([TIME[2015-03-22 13:14:46 +09:00]] 版) <http://tools.ietf.org/html/rfc2046#section-4.1.2>
- [262] [CITE@en[RFC 6657 - Update to MIME regarding "charset" Parameter Handling in Textual Media Types]] ([TIME[2013-03-10 18:09:48 +09:00]] 版) <http://tools.ietf.org/html/rfc6657>
- [57] [CITE@en[RFC 6838 - Media Type Specifications and Registration Procedures]] ([TIME[2015-02-11 00:35:08 +09:00]] 版) <http://tools.ietf.org/html/rfc6838#section-4.2.1>
]REFS]
** 意味
[127] [CODE(MIME)@en[[[text/plain]]]] の [CODE(MIME)@en[[[charset]]]]
[[引数]]は、[RUBYB[[[文字集合]]]@en[character set]]を指定するものです [SRC[>>265]]。
[129] 他の [CODE(MIME)@en[[[text/*]]]] [[MIME型]]も、この
[CODE(MIME)@en[[[charset]]]] [[引数]]を使うと規定できます [SRC[>>265]]。
その意味は、 [CODE(MIME)@en[[[text/plain]]]] の場合と同じとするべきです [SRC[>>265]]。
[134] その他の [[MIME型]]も、この [CODE(MIME)@en[[[charset]]]]
[[引数]]を使うと規定できます [SRC[>>265]]。テキスト情報が主に想定されていますが、
それ以外でも使うことができます [SRC[>>265]]。
;; [135] 規定されていない [[MIME型]]では [CODE(MIME)@en[[[charset]]]]
[[引数]]を使うことはできません。
** 構文
[133] [[RFC 2046]] で規定された値の他、 [[IANA登録簿]]にも値を登録できます [SRC[>>265]]。
[58] [[IANA登録簿]]に登録される [CODE(MIME)@en[[[text/*]]]] [[MIME型]]の
[CODE(MIME)@en[[[charset]]]] [[引数]]は、値として [[RFC 2978]]
[CODE(MIME)@en[[[charset]]]] を指定するものでなければ[['''なりません''']] [SRC[>>57]]。
[143] [[インターネットメール]]では、 [[RFC 2046]] で規定された値、
[[IANA登録簿]]の値、
[CODE[[[x-]]]] で始まる値しか使うことはできません [SRC[>>265]]。
[130] [CODE(MIME)@en[[[text/plain]]]] 以外の [CODE(MIME)@en[[[text/*]]]] [[MIME型]]では、
値を制限することもできます [SRC[>>265]]。
[128] 値は、[[大文字・小文字不区別]]です [SRC[>>265]]。
;; [59] 実際の [[MIME型]]は必ずしもこの規定に従っていません。例えば
[CODE(MIME)@en[[[text/html]]]] や [CODE(MIME)@en[[[text/css]]]] の [CODE(MIME)@en[[[charset]]]]
[[引数]]は [[IANA charset]] ではなく [[Encoding Standard]] の[[符号化ラベル]]として解釈されます。
[131] [[MIME]] では、 [CODE(MIME)@en[[[text/*]]]] の[[改行]]の規則に従わない[[文字集合]]を使うことはできません [SRC[>>265]]。
[EG[
[132] [[UTF-16]] や [[EBCDIC]] を使うことはできません。
]EG]
;; [136] [CODE(MIME)@en[[[text/*]]]] 以外の [[MIME型]]で [CODE(MIME)@en[[[charset]]]]
[[引数]]が適用される場合は、 [[MIME]] でもそのような[[文字集合]]を使えます [SRC[>>265]]。
** 文脈
[142] [[文字コード]]が [CODE(charset)@en[[[US-ASCII]]]] 以外なら、
常に明示的に指定しなければなりません [SRC[>>265]]。
[60] [CODE(MIME)@en[[[charset]]]] [[引数]]は、 [[charset]] 情報が [[payload]]
内部に含まれる場合は、指定する[['''べきではありません''']] [SRC[>>57]]。
[EG[
[61] 例えば [CODE(MIME)@en[[[text/xml]]]] [SRC[>>57]] で
[CODE(XMLa)@en[[[encoding]]]] [[疑似属性]]を指定する時は、
[CODE(MIME)@en[[[charset]]]] [[引数]]を指定するべきではありません。
]EG]
;; [62] 両方を指定するべきではないというだけで、内部の指定を使うべきとは言っていないようです。
** 既定値
[137] [CODE(MIME)@en[[[charset]]]] [[引数]]は明示することが強く推奨されています [SRC[>>265]]。
[63] [CODE(MIME)@en[[[charset]]]] [[引数]]を規定する時は、必須の引数として規定する[['''べき''']]です。必須としない強い理由がある時は既定値を規定しても構いませんし、
既定値がないと規定しても構いません。既定値は [CODE(charset)@en[[[UTF-8]]]]
とする[['''べき''']]です。 [SRC[>>57]]
;; [64] 必須とするべきなのは既定値を指定する必要がないから [SRC[>>57]] とされています。
必須とするか否かに関わらず、既定値を定義しないと[[相互運用性]]はどうやって確保するのでしょうかね??
[65] いずれにせよ [CODE(MIME)@en[[[text/*]]]] を [[IANA登録簿]]に登録する際は
[[charset]] の決定方法を明確に規定しなければ[['''なりません''']] [SRC[>>57]]。
[264] [[RFC 2046]] (およびそれ以前の [[MIME]] [[RFC]]) によれば [CODE(MIME)@en[[[text/*]]]]
の [CODE(MIME)@en[[[charset]]]] [[引数]]の[[既定値]]は [CODE(charset)@en[[[US-ASCII]]]] でした [SRC[>>265]]。
[267] [[RFC 2616]] (およびそれ以前の [[HTTP]] [[RFC]]) はこの既定値を ([[HTTP]] においては)
[CODE(charset)@en[[[ISO-8859-1]]]] に変更しました [SRC[>>266]]。
[268] [DFN[[[RFC 6657]]]] は、そのどちらも現状に合っていないとして、
[[RFC 2046]] を[[更新]]して次のように規定しています [SRC[>>262, >>57]]。
[FIG(list)[
- [269] [[MIME型]]の登録は次のいずれかとする[['''べきです''']]。
-- [270] [[charset]] 情報はデータ本体に含まれているため、 [[MIME型]]としては [CODE(MIME)@en[[[charset]]]]
[[引数]]は使わない。よって既定値もない。
-- [271] [CODE(MIME)@en[[[charset]]]] [[引数]]は必須とし、既定値不要とする。
- [272] どうしても [CODE(MIME)@en[[[charset]]]] 既定値を定義したい場合、 [CODE(charset)@en[[[UTF-8]]]]
とする[['''べきです''']]。
- [273] どう [[charset]] を決定するか規定しなければ[['''なりません''']]。
- [274] [[MIME]] を使う[[プロトコル]]は既定値を上書きしては[['''なりません''']]。
]FIG]
;; [275] [CODE(MIME)@en[[[charset]]]] [[引数]]を必須にするのはプロトコルや実装によってはあまり現実的ではないと思いますが・・・。
;; [276] [[HTTP]] の規定を上書きするものではないみたいです。
[215] その後出版された [[RFC 7231]] は >>267 の[[既定値]]を削除しています [SRC[>>214]]。
** 処理
[145] 一般に [[MIME]] の生成ソフトウェアは、可能な限り「[[最小公倍数]]」
たる[[文字集合]]を使うべきです [SRC[>>265]]。
[EG[
[146] 例えば [CODE(charset)@en[[[ISO-8859-[VAR[X]]]]]] の[[左半分]]しか使わないなら、
[CODE(charset)@en[[[US-ASCII]]]] を使う[['''べきです''']] [SRC[>>265]]。
]EG]
;; [147] しかし現在となってはむしろ常に [[UTF-8]] を使う方が[[相互運用性]]は高いかもしれません。
[102] [[MIME]] では未知の [CODE(MIME)@en[[[text/[VAR[*]]]]]] [[MIME型]]は
[CODE(MIME)@en[[[text/plain]]]] として扱うことになっています。
[CODE(MIME)@en[[[charset]]]] [[引数]]がこの際どう扱われるかは不明です。
** 歴史
[REFS[
- [266] [[RFC 2616]]
- [259] [CITE@en[Update to MIME regarding Charset Parameter Handling in Textual Media Types]]
( ([TIME[2012-02-08 03:13:09 +09:00]] 版))
<https://svn.tools.ietf.org/svn/wg/appsawg/draft-ietf-appsawg-mime-default-charset/latest/draft-ietf-appsawg-mime-default-charset.html>
]REFS]
* XML の [CODE(MIME)@en[charset]] 引数
[101] [[XML MIME型]]でも [CODE(MIME)@en[[[charset]]]] [[引数]]があります。
詳細は規定されていませんが (ひどい)、[[MIME charset]] を指定するもので、
[[XML]] [CODE(XMLa)@en[[[encoding]]]] [[疑似属性]]より優先されるものと解されています。
[923] 詳しくは[[XMLにおける文字コード]]を参照してください。
* 文字集合
charset は省略形のように見えます。元々はそうなのでしょうが、
今となっては charset は charset であって charset でしかない、
と考えるのが適当かもしれません。訳にあたっても、
訳して原文のニュアンスが失われるとアレなので (ニュアンスなんて
そもそも残らないかもしれませんけど。) そのまま charset
とするのが良いのではないでしょうか。
正規形のように見える character set は、[[文字集合]]と訳すのが
定着してます。こちらの語は、 (やはり charset と同様の混乱はあるものの)
より本来の意味 (文字の集合) で使われていると思われます。
- [1] なんにせよ、[[文字コード]]のところに挙げられている charset の類義語は、その''文脈ごとに意味が異なる''くらいに思っていないと要らぬ勘違いをしてしまいます。
- [2] [[MIME]] charset の最小化規則と、 [[HTTP]] [[CGI]] のような動的生成って本質的に相容れないもののような気がしませんかね。あるいは streaming 的なものとも。 [[chunked符号化]]の尾っぽ header を使えば何とかならなくもない気もするけど, クライアント側で届いたところからレンダリングが不能になって結局意味がない (サーバー側でデータ生成完了後に charset を判定して一気に送りつけるのと変わらない) し、よって steraming には使いようがないし。
- [3] >>2 の解法は最小化規則をあきらめちゃうしかないのかな。 CGI 動的生成はまだ最大の範囲を知ってそうなものだけど、 streaming だと知らないこともあり得る (多言語会談とか?) から、考えうる最大の charset ([[UTF-8]] とか?) を予め仮定しておくしかなさそう。
- [4] >>3 の考え方はつまり charset 指定の最大化であって、 MIME の考えとは全く逆になってしまう。
- [5] >>4 そもそも MIME の最小化規則は相互通信性最大化を目的としている。 [[SMTP]]/[[822]] では基本的にやり直しが効かないから、一度で相手に伝える必要がある (概念上は)。一方 HTTP とかだと[[内容折衝]]もあるし、 (歴史的経緯のせいで) ブラウザの利用者の操作で文字コード選択が出来るから (メイラにもあるけど、 MIME の思想的には考慮外だと思う。) 一度で伝える必要性ってのはあんまりないのかもしれない。こういう考え方の違いがにじみ出てる気がする。
- [6] ところで MIME 厨うざい。 MIME (IANA) charset 名だけが[[文字コード]]の名前ではないわけで。色んな[[文字コード]]名がこれ以上乱立するのは鬱だから IANA 名を使おうとするのは別に構わないんだが。
- [7] >>6 構わないんだが、だからといって IANA 名と違うから間違ってる!直せ!ってのはもうアホかと。
- [8] >>6-7 既に乱立してる名前はもうなくせないから、せめて新しい名前を作らない努力はするべきですね。それと IANA 名の強制は話が別。大体、 IANA registry はぐちゃぐちゃだし登録されてない文字コードも多いし、互換性とかと関係ない場面で採用するのがいいとは思えない。
- [9] >>8 とはいうものの IANA 名以外にまともな registry はないよな。やっぱり現実には何でもあり, IANA 名推奨。に落ち着くのかなあ。
- [10] >>6-9 なんだが、 IANA 名が正式な名前であってその他の名前を標準名にするなとかうるさい厨がいるんだよな〜。 MIME に於いては IANA 名のうち MIME preferred name が推奨されるとか、常識的に考えて Alias 名より Name の欄にある名前が「正式」なんだろうとか、 IETF/IANA の世界では IANA 名が「正式」なんだろうとか思われるけど、一端そういう世界を出てしまったら、「正式」もなにもないと思うんだけどな〜
- [11] >>10 つまり、ここに挙がっていることやその他の, 名前選択の長短についての検討を含めて、こういう名前採用すべし、っていう意見ならどんどん勝手に言えばいいんだけど、これが IANA で決まってるから正式なんだ、と非 IETF 世界で, それ以上の根拠を述べずに主張しても、うざいだけ。
- [12] 最近妙に普及している [CODE(MIME)[charset]] 名に [CODE(charset)[[[none]]]] があります。 [[Apache]] の設定ファイルで [CODE[[[AddDefaultCharset]]]] [[指令]]を使って [CODE[AddDefaultCharset none]] と書くべきであるという不思議な知識が蔓延しているからです。 [WEAK[(たぶん [CODE[AddDefaultCharset off]] と書きたかったのでしょう。もっとも、 Apache 付属の説明文すら読めない人が [CODE[AddDefaultCharset off]] を正しく使えるとは思えませんが。 [CODE[AddDefaultCharset]] 指令は初心者が使う機能ではありませんよ。)]]
- [13] 一応補足しますが、 >>12 は [[HTTP]] の [CODE(MIME)[[[Content-Type]]]] 欄での[[媒体型]]指定において使います。
* CGI における [CODE(MIME)@en[charset]] 引数
** CGI 要求における既定値
[861] [[CGI]] の[[メタ変数]] [CODE(CGI)@en[[[CONTENT_TYPE]]]] においては、
[[既定値]]が次の優先度で定義されています。
= [[MIME型]]依存で[[システム定義]]の[[既定値]]を定めても[['''構いません''']]。
= [CODE(MIME)@en[[[text/*]]]] については [[RFC 2616]] に従い [CODE(charset)@en[[[ISO-8859-1]]]] です。
= [[MIME型]]で[[既定値]]が定義されていれば、それです。
= [CODE(charset)@en[[[US-ASCII]]]] です。
[REFS[
- [862] [CITE@en[RFC 3875 - The Common Gateway Interface (CGI) Version 1.1]] ([TIME[2011-11-20 06:09:05 +09:00]] 版) <http://tools.ietf.org/html/rfc3875#page-13>
]REFS]
[863] [[HTTP]] との実質的な違いは第1位の[[システム定義]]の[[既定値]]が認められていることです。
[[CGI]] は[[システム]]の慣習によって[[鯖]]から[[CGIスクリプト]]に値を引き渡す前に諸々の変換を施すことが認められているので、
[[charset]] についても同様の取り扱いを行えるように、との配慮なのでしょうか。
** CGI 応答における既定値
[864] 特に[[システム定義]]がなければ、[[クライアント]]によって [CODE(MIME)@en[[[text/*]]]]
の既定の [[charset]] が [[HTTP]] なら [CODE(charset)@en[[[ISO-8859-1]]]]、そうでなければ
[CODE(charset)@en[[[US-ASCII]]]] とみなされます。そのため[[CGIスクリプト]]は
[CODE(MIME)@en[[[charset]]]] [[引数]]を含める[['''べきです''']]。 [SRC[>>865]]
[REFS[
- [865] [CITE@en[RFC 3875 - The Common Gateway Interface (CGI) Version 1.1]] ([TIME[2011-11-20 06:09:05 +09:00]] 版) <http://tools.ietf.org/html/rfc3875#section-6.3.1>
]REFS]
[866] 明記されていませんが、[[システム定義]]があれば実装は [[charset]] の変換を適宜行うことになるでしょうし、
[CODE(MIME)@en[[[charset]]]] が指定されていなかったり不適切だったりすると適宜書き換えるものと思われます。
** EBCDIC/POSIX
[868] [[EBCDIC]] を使う [[POSIX]] 環境では、既定の [[charset]] は [[IBM1047]]
です。これは [CODE(MIME)@en[[[text/*]]]] とその他[[実装定義]]の [[MIME型]]に適用されます。
[SRC[>>867]]
[REFS[
- [867] [CITE@en[RFC 3875 - The Common Gateway Interface (CGI) Version 1.1]] ([TIME[2011-11-20 06:09:05 +09:00]] 版) <http://tools.ietf.org/html/rfc3875#section-7.3>
]REFS]
* [CODE(HTML)@en[meta]] 要素 [CODE(HTMLa)@en[charset]] 属性 (HTML)
[89] [CODE(HTMLe)@en[[[meta]]]] [[要素]]の [DFN[[CODE(HTMLa)@en[[[charset]]]]]]
[[属性]]は、[[文書]]の[[文字符号化]]を指定する[[文字符号化宣言]]です [SRC[>>88]]。
** 属性値
[90] [[XML文書]]では、 [CODE(charset)@en[[[UTF-8]]]] に[[ASCII大文字・小文字不区別]]で[[一致]]する値でなければ[['''なりません''']]。
[CODE(HTML)@en[<meta charset>]] が含まれる[[XML文書]]は、 [[UTF-8]]
を使わなければなりません。 [SRC[>>88]]
;; [91] [[XML文書]]では [CODE(HTML)@en[<meta charset>]] は意味を持たず、
[[HTML]] と [[XML]] との相互変換の便宜のためのみを目的に認められています [SRC[>>88]]。
** 文脈
[92] [CODE(HTML)@en[<meta charset>]] [[要素]]は、[[メタデータ内容]]として使えます。
[93] [CODE(HTML)@en[<meta charset>]] [[要素]]は、[[文書]]中に複数あっては[['''なりません''']]
[SRC[>>88]]。
* [CODE(CSS)@en[@charset]] 規則 (CSS)
[54] [[CSS]] の[[@規則]] [CODE(CSS)@en[@charset]] は、当該
[[CSSスタイルシート]]の[[文字コード]]を表します。
;; [53] [CODE(CSS)@en[[[@charset]]]] を参照。
* 異体説明における [CODE(HTTP)@en[charset]] 属性
[78] [[異体説明]]では [DFN[[CODE(HTTP)@en[[[charset]]]]]] [[異体属性]]は
[CODE(HTTP)@en[[[Content-Type:]]]] [[ヘッダー]]の [CODE(HTTP)@en[[[charset]]]]
[[引数]]に相当します [SRC[>>77]]。
;; [79] [CODE(HTTP)@en[[[type]]]] [[異体属性]]から [CODE(HTTP)@en[[[charset]]]]
[[引数]]は除外します。
** 構文
[80] 属性値は、 [[charset]] です [SRC[>>77]]。
;; [81] [[RFC 2068]] の定義が参照されています。
* 範囲
[918] [[HTTP]] の [CODE(HTTP)@en[[[Accept-Charset:]]]] [[ヘッダー]]や [[HTML]]
の [CODE(HTMLa)@en[[[accept-charset]]]] [[属性]]では、 [[charset]]
のリストを指定することができます。更に [[HTTP]] の[[ヘッダー]]では、
優先順位を指定したり、その他を表す「[CODE[[[*]]]]」を指定したりできます。
* charset の一覧
[138] [[MIME]] は、[[インターネットメール]]で使う単一の[[文字集合]]があるのが好ましいながら、
近い将来のうちに統一は望めないとして、少数だけ標準の[[文字集合]]を定義する [SRC[>>265]]
としていました。
;; [139] [[MIME]] が開発された90年代には、 [[Unicode]] への統一は困難とも思われていました。
[140] [[MIME]] は次のものを規定しています [SRC[>>265]]。
[FIG(short list)[
- [CODE(charset)@en[[[US-ASCII]]]]
- [CODE(charset)@en[[[ISO-8859-[VAR[X]]]]]]
]FIG]
;; [141] これは比較的論争とならなかったもののみであり、 [[US-ASCII]]
以外の特定の[[文字集合]]を推奨するものではない [SRC[>>265]] とされています。
[[MIME]] の時代、[[文字コード]]の選択は宗教的な問題を含む大きな関心事でした。
[144] 実装者は、どうしても必要な場合を除き、新しい[[文字集合]]を定義する[RUBYB[べきではありません]@en[discouraged]] [SRC[>>265]]。
* [CODE(MIME)@en[charset]] 引数が使われている MIME 型とその定義のバリエーション
** [[MIME]] の [CODE(MIME)@en[charset]] 引数と互換な定義
[14]
[REFS[
-- [CODE(MIME)@en[[[text/plain]]]] ([[平文]])
--- [DEL[[[RFC 1341]]]], [DEL[[[RFC 1521]]]], [[RFC 2046]]
-- [CODE(MIME)@en[[[text/html]]]] ([[HTML]])
--- [[HTML4]] 以前の定義
-- [CODE(MIME)@en[[[text/csv]]]] ([[CSV]])
--- [[RFC 4180]]
--- [Q[[CODE(MIME)@en[[[text/[VAR[*]]]]]] で使えるものは使える]]という定義。
--- 省略可能。
-- [CODE(MIME)@en[[[application/sgml-open-catalog]]]] ([[SGML型録]])
-- [CODE(MIME)@en[[[text/troff]]]]
--- [[RFC 4263]]
--- [[RFC 2046]] を参照。
--- 省略可能。
-- [830] [CODE(MIME)@en[[[text/owl-functional]]]]、[CODE(MIME)@en[[[text/owl-manchester]]]]
--- [CITE[OWL 2 Web Ontology Language Structural Specification and Functional-Style Syntax]] ([TIME[2009-10-27 23:15:00 +09:00]] 版) <http://www.w3.org/TR/2009/REC-owl2-syntax-20091027/#Appendix:_Internet_Media_Type.2C_File_Extension.2C_and_Macintosh_File_Type>
--- [CITE[OWL 2 Web Ontology Language Manchester Syntax]] ([TIME[2009-10-27 23:14:56 +09:00]] 版) <http://www.w3.org/TR/2009/NOTE-owl2-manchester-syntax-20091027/#Appendix:_Internet_Media_Type.2C_File_Extension_and_Macintosh_File_Type>
--- 規定が曖昧ながら、 [[MIME]] の定義を上書きする意図はないように見えます。
--- ただし [[MIME]] を参照しているわけではありません。
--- UTF-8 を[[推奨]]。
-- [831] [CODE(MIME)@en[[[application/owl+xml]]]]
--- [CITE[OWL 2 Web Ontology Language XML Serialization]] ([TIME[2009-10-27 23:15:01 +09:00]] 版) <http://www.w3.org/TR/2009/REC-owl2-xml-serialization-20091027/#Appendix:_Internet_Media_Type.2C_File_Extension.2C_and_Macintosh_File_Type>
--- 規定が曖昧ながら、 [[MIME]] の定義を採用しているように見えます。
--- ただし [[MIME]] を参照しているわけではありません。
--- [[RFC 3023]] は参照していません。
- [83] [CODE(MIME)@en[[[application/news-groupinfo]]]]
-- [CITE@en[RFC 5537 - Netnews Architecture and Protocols]] ([TIME[2014-09-14 17:08:11 +09:00]] 版) <http://tools.ietf.org/html/rfc5537#section-4.2>
-- [CODE(MIME)@en[[[text/plain]]]] と同じ
-- 省略可能
-- 既定値は [CODE(charset)@en[[[US-ASCII]]]]
- [84] [CODE(MIME)@en[[[application/news-checkgroups]]]]
-- [CITE@en[RFC 5537 - Netnews Architecture and Protocols]] ([TIME[2014-09-14 17:08:11 +09:00]] 版) <http://tools.ietf.org/html/rfc5537#section-4.3>
-- 省略可能
-- 既定値は [CODE(charset)@en[[[US-ASCII]]]]
]REFS]
** [[MIME]] の [CODE(MIME)@en[charset]] 引数の部分集合な定義
[REFS[
[838]
- [888] [CODE(MIME)@en[[[application/shf+xml]]]] ([[SHF]])
-- [[RFC 4194]]
-- 値は [CODE(charset)@en[[[UTF-8]]]] のみ。
-- 必須。
- [889] [CODE(MIME)@en[[[text/provenance-notation]]]]
-- [CITE@en[PROV-N: The Provenance Notation]] ([TIME[2013-04-25 04:01:26 +09:00]] 版) <http://www.w3.org/TR/2013/REC-prov-n-20130430/#media-type>
-- 値は [CODE(charset)@en[[[UTF-8]]]] のみ。
-- 必須。
- [72] [CODE(MIME)@en[[[text/n3]]]], [CODE(MIME)@en[[[text/rdf+n3]]]],
[CODE(MIME)@en[[[application/n3]]]]
-- [CITE@en[Notation3 (N3): A readable RDF syntax]] ([TIME[2008-01-16 03:12:43 +09:00]] 版) <http://www.w3.org/TeamSubmission/2008/SUBM-n3-20080114/#charset>
-- 値は [CODE(charset)@en[[[utf-8]]]] のみ。
-- [[ASCII]] の場合のみ、省略可能。
- [875] [CODE(MIME)@en[[[text/owl-manchester]]]]
-- [CITE[OWL 2 Web Ontology Language Manchester Syntax]] ([TIME[2012-10-18 22:45:56 +09:00]] 版) <http://www.w3.org/TR/2012/NOTE-owl2-manchester-syntax-20121018/#Appendix:_Internet_Media_Type.2C_File_Extension_and_Macintosh_File_Type>
-- 省略可能。
-- 値は [CODE(charset)@en[[[UTF-8]]]] のみ。
- [876] [CODE(MIME)@en[[[text/ping]]]]
-- [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-10-19 23:02:58 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#text/ping>
-- [CITE@en[Web Applications 1.0 r7468 Update the IANA registration templates to allow charset='' parameters so that when we change to the new registration mechanism for MIME types, we don't forget to allow these.]] ([TIME[2012-10-18 08:53:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=7467&to=7468>
-- 省略可能。
-- 値は [CODE(charset)@en[[[utf-8]]]] のみ。
- [877] [CODE(MIME)@en[[[text/event-stream]]]]
-- [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-10-19 23:02:58 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#text/event-stream>
-- 省略可能。
-- 値は [CODE(charset)@en[[[utf-8]]]] のみ。
- [878] [CODE(MIME)@en[[[text/cache-manifest]]]]
-- [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-10-19 23:02:58 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#text/cache-manifest>
-- [CITE@en[Web Applications 1.0 r7468 Update the IANA registration templates to allow charset='' parameters so that when we change to the new registration mechanism for MIME types, we don't forget to allow these.]] ([TIME[2012-10-18 08:53:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=7467&to=7468>
-- 省略可能。
-- 値は [CODE(charset)@en[[[utf-8]]]] のみ。
]REFS]
*** Turtle
--[73]
[CODE(MIME)@en[[[text/turtle]]]], [CODE(MIME)@en[[[application/x-turtle]]]]
--- [CITE@en[Turtle - Terse RDF Triple Language]] ([TIME[2008-01-16 02:03:24 +09:00]] 版) <http://www.w3.org/TeamSubmission/2008/SUBM-turtle-20080114/#sec-mime>
--- [CITE@en[Turtle - Terse RDF Triple Language]] ([TIME[2008-01-16 02:03:24 +09:00]] 版) <http://www.w3.org/TeamSubmission/2008/SUBM-turtle-20080114/#sec-mediaReg>
--- 値は [CODE(charset)@en[[[UTF-8]]]] のみ。
--- [CODE(MIME)@en[[[text/[VAR[*]]]]]] で [CODE(MIME)@en[[[charset]]]] [[引数]]なしで
[[UTF-8]] が使えるようになるまでは、 [CODE(MIME)@en[[[charset]]]]
[[引数]]を明示することを推奨。
--- [[ASCII]] の場合のみ、省略可能。
[REFS[
- [873] [CITE@EN[R2RML: RDB to RDF Mapping Language]] ([TIME[2012-09-27 00:23:35 +09:00]] 版) <http://www.w3.org/TR/2012/REC-r2rml-20120927/#syntax>
]REFS]
[874] [[R2RML]] である [[Turtle]] について: [CODE(MIME)@en[[[charset]]]] [[引数]]を使う[['''べきです''']]
[SRC[>>873]]。
[REFS[
- [903] [CODE(MIME)@en[[[text/turtle]]]]
-- [902] [CITE@en[RDF 1.1 Turtle]] ([TIME[2014-03-07 08:53:19 +09:00]] 版) <https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-turtle/index.html#h2_sec-mediaReg>
]REFS]
[904] >>903 によれば値は [CODE[[[UTF-8]]]] のみ。[[非ASCII文字]]を含むなら[[必須]]。
- [850] [CODE(MIME)@en[[[text/event-stream]]]]
-- 値は [CODE(charset)@en[[[utf-8]]]] のみ。
-- 省略可能。
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/event-stream>
- [851] [CODE(MIME)@en[[[text/html]]]], [CODE(MIME)@en[[[text/html-sandboxed]]]] ([[HTML MIME型]])
-- [[優先MIME名]]でなければならないなどいくつか制約あり。
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/html>
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#text/html-sandboxed>
** [[RFC 3023]] の [CODE(MIME)@en[charset]] と同じ定義
[840]
[REFS[
- [841] [CODE(MIME)@en[[[application/rif+xml]]]]
-- [CITE[RIF Core Dialect]] ([TIME[2010-06-22 23:52:50 +09:00]] 版) <http://www.w3.org/TR/2010/REC-rif-core-20100622/#Appendix:_RIF_Media_Type_Registration>
-- [[RFC 3023]] を参照。
-- 省略可能。
- [879] [CITE@en[RFC 6787 - Media Resource Control Protocol Version 2 (MRCPv2)]] ([TIME[2012-11-13 15:18:40 +09:00]] 版) <http://tools.ietf.org/html/rfc6787#section-13.2.1>
- [919] [CITE@en[RFC 4662 - A Session Initiation Protocol (SIP) Event Notification Extension for Resource Lists]] ([TIME[2014-06-15 09:36:33 +09:00]] 版) <http://tools.ietf.org/html/rfc4662#section-8.2>
-- [[RFC 3023]] を参照。
-- 省略可能。
]REFS]
** [[RFC 3023]] [CODE(MIME)@en[[[application/xml]]]] と同じ定義
[REFS[
[839]
- [920] [CODE(MIME)@en[[[application/xml-external-parsed-entity]]]]
-- [[RFC 3023]]
-- 省略可能
- [922] [CODE(MIME)@en[[[application/xml-dtd]]]]
-- [[RFC 3023]]
-- 省略可能
-- [15] [CODE(MIME)@en[[[application/cdl+xml]]]]
--- [CITE@en[Web Services Choreography Description Language Version 1.0]]
<http://www.w3.org/TR/2005/CR-ws-cdl-10-20051109/#Mime-Type-definition>
--- 省略可能。
-- [16] [CODE(MIME)[[[application/ccxml+xml]]]]
--- [[RFC 4267]]
--- 省略可能。
-- [17] [CODE(MIME)@en[[[application/voicexml+xml]]]]
--- [[RFC 4267]]
--- 省略可能。
-- [18] [CODE(MIME)@en[[[application/srgs+xml]]]]
--- [[RFC 4267]]
--- 省略可能。
-- [19] [CODE(MIME)@en[[[application/ssml+xml]]]]
--- [[RFC 4267]]
--- [[RFC 4267]]
--- 省略可能。
-- [20] [CODE(MIME)@en[[[application/pls+xml]]]]
--- [[RFC 4267]]
--- 省略可能。
-- [20] [CODE(MIME)@en[[[application/atom+xml]]]]
--- [[RFC 4287]] 7.
--- 省略可能。
-- [823] [CODE(MIME)@en[[[application/atomcat+xml]]]]
--- [[RFC 5023]]
--- 省略可能。
-- [824] [CODE(MIME)@en[[[application/atomsvc+xml]]]]
--- [[RFC 5023]]
--- 省略可能。
-- [883] [CODE(MIME)@en[[[application/atomdeleted+xml]]]]
--- [884] [CITE@en[RFC 6721 - The Atom "deleted-entry" Element]] ([TIME[2012-12-31 01:08:20 +09:00]] 版) <http://tools.ietf.org/html/rfc6721#section-8>
--- 省略可能。
-- [21] [CODE(MIME)@en[[[application/sparql-result+xml]]]]
--- [CITE@en[SPARQL Query Results XML Format]]
<http://www.w3.org/TR/2006/CR-rdf-sparql-XMLres-20060406/#mime-form>
--- [CITE@en[SPARQL Query Results XML Format (Second Edition)]] ([TIME[2013-03-21 20:27:51 +09:00]] 版) <http://www.w3.org/TR/2013/REC-rdf-sparql-XMLres-20130321/#mime-form>
--- 省略可能。
-- [22] [CODE(MIME)@en[[[application/xv+xml]]]]
--- [[RFC 4374]]
--- 省略可能。
-- [23] [CODE(MIME)@en[[[application/smil+xml]]]],
[CODE(MIME)@en[[[application/smil]]]]
--- [[RFC 4536]]
--- 省略可能。
-- [26] [CODE(MIME)@en[[[application/simple-filter+xml]]]]
--- [[RFC 4661]]
--- 省略可能。
-- [29] [CODE(MIME)@en[[[application/vnd.sun.wadl+xml]]]]
--- 省略可能。
-- [31] [CODE(MIME)@en[[[application/mediaservercontrol+xml]]]]
--- [[RFC 4722]]
--- 省略可能
-- [33] [CODE(MIME)@en[[[application/docbook+xml]]]]
--- [[DocBook]] 仕様書
--- 省略可能
-- [35] [CODE(MIME)@en[[[application/xslt+xml]]]]
--- [CITE@EN[XSL Transformations (XSLT) Version 2.0]] <http://www.w3.org/TR/2007/REC-xslt20-20070123/#media-type-registration>
--- 省略可能
-- [36] [CODE(MIME)@en[[[application/xquery+xml]]]]
--- [CITE@en[XML Syntax for XQuery 1.0 (XQueryX)]]
<http://www.w3.org/TR/2007/REC-xqueryx-20070123/#xqueryx-mime-registration>
--- [CITE@EN[XQueryX 3.0]] ([TIME[2014-04-08 08:22:50 +09:00]] 版) <http://www.w3.org/TR/xqueryx-3/#xqueryx-mime-registration>
--- 省略可能
-- [37] [CODE(MIME)@en[[[application/cpl+xml]]]]
--- [[RFC 3880]]
--- 省略可能
-- [44] [CODE(MIME)@en[[[application/resource-lists+xml]]]]
--- [[RFC 4826]]
--- 省略可能
-- [45] [CODE(MIME)@en[[[appliaction/rls-services+xml]]]]
--- [[RFC 4826]]
--- 省略可能
-- [46] [CODE(MIME)@en[[[application/wsdl+xml]]]]
--- [CITE@en[Web Services Description Language (WSDL) Version 2.0 Part 1: Core Language]]
<http://www.w3.org/TR/2007/REC-wsdl20-20070626/#ietf-reg>
--- 省略可能
-- [50] [CODE(MIME)@en[[[application/wspolicy+xml]]]]
--- [CITE@en-US[Web Services Policy 1.5 - Framework]]
<http://www.w3.org/TR/2007/REC-ws-policy-20070904/#ietf-reg>
--- 省略可能
-- [67] [CODE(MIME)@en[[[application/sparql-result+xml]]]]
--- [CITE@en[SPARQL Query Results XML Format]]
<http://www.w3.org/TR/2008/REC-rdf-sparql-XMLres-20080115/#mime-form>
--- 省略可能
- [70] [CODE(MIME)@en[[[application/patch-ops-error+xml]]]]
-- [[RFC 5261]] ([[IETF]] [[提案標準]]) <urn:ietf:rfc:5261>
-- 省略可能
-- [CITE@en[RFC 5261 - An Extensible Markup Language (XML) Patch Operations Framework Utilizing XML Path Language (XPath) Selectors]] ([TIME[2013-08-11 16:56:51 +09:00]] 版) <http://tools.ietf.org/html/rfc5261#section-10.2>
- [837] [CODE(MIME)@en[[[application/xproc+xml]]]]
-- [CITE[XProc: An XML Pipeline Language]] ([TIME[2010-05-11 22:38:07 +09:00]] 版) <http://www.w3.org/TR/2010/REC-xproc-20100511/#media-type-registration>
-- 省略可能
-[827] [CODE(MIME)@en[[[application/emma+xml]]]]
-- [CITE[EMMA: Extensible MultiModal Annotation markup language]]
<http://www.w3.org/TR/2009/REC-emma-20090210/#media-type-registration>
-- 省略可能
-[845] [CODE(MIME)@en[[[application/xquery+xml]]]]
-- [CITE@EN[XML Syntax for XQuery 1.0 (XQueryX) (Second Edition)]]
<http://www.w3.org/TR/2010/REC-xqueryx-20101214/#xqueryx-mime-registration>
-- 省略可能
- [847] [CODE(MIME)@en[[[application/tei+xml]]]]
-- [CITE@en[RFC 6129 - The \x27application/tei+xml\x27 Media Type]] ([TIME[2011-04-21 05:04:28 +09:00]] 版) <http://tools.ietf.org/html/rfc6129#section-5.1>
-- 省略可能
- [852] [CODE(MIME)@en[[[application/xhtml+xml]]]]
-- <http://www.whatwg.org/specs/web-apps/current-work/complete.html#application/xhtml+xml>
-- 省略可能
- [853] [CODE(MIME)@en[[[application/metalink4+xml]]]]
-- [CITE@en[RFC 5854 - The Metalink Download Description Format]] ([TIME[2011-07-03 17:23:02 +09:00]] 版) <http://tools.ietf.org/html/rfc5854#section-6.2>
-- 省略可能
- [854] [CODE(MIME)@en[[[application/inkml+xml]]]]
-- [CITE[Ink Markup Language (InkML)]] ([TIME[2011-09-20 17:16:49 +09:00]] 版) <http://www.w3.org/TR/2011/REC-InkML-20110920/#media-type-registration>
-- 省略可能
- [858] [CODE(MIME)@en[[[application/evd+xml]]]]
-- [CITE@en[Web Services Event Descriptions (WS-EventDescriptions)]] ([TIME[2011-12-13 20:09:52 +09:00]] 版) <http://www.w3.org/TR/2011/REC-ws-event-descriptions-20111213/#EVD_MIME>
-- 省略可能
- [886] [CODE(MIME)@en[[[application/xenc+xml]]]]
-- [CITE@en[XML Encryption Syntax and Processing Version 1.1]] ([TIME[2013-04-13 02:02:32 +09:00]] 版) <http://www.w3.org/TR/2013/REC-xmlenc-core1-20130411/#sec-MediaType-Registration>
-- 省略可能
- [887] [CODE(MIME)@en[[[application/provenance+xml]]]]
-- [CITE@en[PROV-XML: The PROV XML Schema]] ([TIME[2013-04-30 13:05:52 +09:00]] 版) <http://www.w3.org/TR/2013/NOTE-prov-xml-20130430/#media-type>
-- 省略可能
- [892] [CODE(MIME)@en[[[application/xop+xml]]]]
-- [CITE@en[XML-binary Optimized Packaging]] ([TIME[2005-01-24 23:00:54 +09:00]] 版) <http://www.w3.org/TR/xop10/#id2270207>
-- 省略可能
- [896] [CODE(MIME)@en[[[message/imdn+xml]]]]
-- [CITE@en[RFC 5438 - Instant Message Disposition Notification (IMDN)]] ([TIME[2013-10-06 10:18:10 +09:00]] 版) <http://tools.ietf.org/html/rfc5438#section-15.1>
-- 省略可能
- [901] [CODE(MIME)@en[[[application/mathml+xml]]]], [CODE(MIME)@en[[[application/mathml-presentation+xml]]]], [CODE(MIME)@en[[[application/mathml-content+xml]]]]
-- 省略可能
-- [CITE[Mathematical Markup Language (MathML) Version 3.0 2nd Edition -- single page HTML + MathML Version]] ([TIME[2014-02-10 20:00:21 +09:00]] 版) <http://www.w3.org/Math/draft-spec/mathml.html#appendixb_media-types-reg>
- [909] [CODE(MIME)@en[[[application/xacml+xml]]]]
-- 省略可能
-- [CITE@en[RFC 7061 - eXtensible Access Control Markup Language (XACML) XML Media Type]] ([TIME[2014-03-02 21:45:15 +09:00]] 版) <http://tools.ietf.org/html/rfc7061#section-2.1>
- [912] [CODE(MIME)@en[[[application/emotionml+xml]]]]
-- 省略可能
-- [CITE@en[Emotion Markup Language (EmotionML) 1.0]] ([TIME[2014-05-20 20:02:30 +09:00]] 版) <http://www.w3.org/TR/emotionml/#media-type-registration>
- [914] [CODE(MIME)@en[[[application/its+xml]]]]
-- 省略可能
-- [CITE@en-US[Internationalization Tag Set (ITS) Version 2.0]] ([TIME[2013-10-27 19:39:43 +09:00]] 版) <http://www.w3.org/TR/its20/#its-mime-type>
- [76] [CODE(MIME)@en[[[application/alps+xml]]]] ([[ALPS]])
-- 省略可能
-- [CITE@en[draft-amundsen-richardson-foster-alps-00 - Application-Level Profile Semantics (ALPS)]] ([TIME[2014-10-16 14:34:48 +09:00]] 版) <https://tools.ietf.org/html/draft-amundsen-richardson-foster-alps-00#section-4.1>
- [82] [CODE(MIME)@en[[[application/metalink4+xml]]]] ([[Metalink]])
-- 省略可能
-- [CITE@en[RFC 5854 - The Metalink Download Description Format]] ([TIME[2014-09-14 16:54:14 +09:00]] 版) <http://tools.ietf.org/html/rfc5854#section-6.2>
- [452] [CODE(MIME)@en[[[application/cmisquery+xml]]]],
[CODE(MIME)@en[[[application/cmisallowableactions+xml]]]],
[CODE(MIME)@en[[[application/cmistree+xml]]]],
[CODE(MIME)@en[[[application/cmisatom+xml]]]],
[CODE(MIME)@en[[[application/cmisacl+xml]]]]
-- 省略可能
-- [CITE[OASIS Specification Template]] ([TIME[2010-04-13 02:41:48 +09:00]] 版) <http://docs.oasis-open.org/cmis/CMIS/v1.0/cs01/cmis-spec-v1.0.html#_Toc235259822>
]REFS]
** [[RFC 3023]] [CODE(MIME)@en[[[application/xml]]]] の [CODE(MIME)@en[[[charset]]]] [[引数]]の[[部分集合]]な定義
[27]
-- [28] [CODE(MIME)@en[[[application/cellml+xml]]]]
([[CellML]])
--- [[RFC 4642]] ([[IETF]] [[情報提供]] [[RFC]])
<urn:ietf:rfc:4642>
--- 省略可能。
--- [CODE(charset)@en[[[UTF-8]]]] だけが[[妥当]]な値
--- [[利用者エージェント]]は他の値に対応[['''して構いません''']]
** [[RFC 3023]] の [CODE(MIME)@en[[[text/xml]]]] の [CODE(MIME)@en[[[charset]]]] と同じ定義
[40]
[REFS[
- [921] [CODE(MIME)@en[[[text/xml-external-parsed-entity]]]]
-- [[RFC 3023]]
-- 省略可能
-- [41] [CODE(MIME)@en[[[text/cmml]]]]
--- [CITE@en[The Continuous Media Markup Language (CMML), Version 2.1]] ([CODE[2006-05-06 10:39:46 +09:00]] 版)
([[満期]] ([DEL@en[[[IETF]] [[I-D]]]]))
<http://annodex.net/TR/cmml.html#rfc.section.10>
- [24] [CODE(MIME)@en[[[text/javascript]]]],
[CODE(MIME)@en[[[text/ecmascript]]]],
[CODE(MIME)@en[[[application/javascript]]]],
[CODE(MIME)@en[[[application/ecmascript]]]]
-- [[RFC 4329]]
-- 省略可能。
- [32] [CODE(MIME)@en[[[application/beep]]]]
([[BEEP]])
-- [[RFC 3080]] ([[IETF]] [[提案標準]])
<urn:ietf:rfc:3080>
-- [[既定値]]が [CODE(charset)@en[[[UTF-8]]]]
であることと、 [[UTF-8]] 以外を用いる時は
[CODE(MIME)@en[[[charset]]]] [[引数]]が必要なことだけ規定されています。
]REFS]
** OWL
[REFS[
- [880] [[OWL]] [CODE(MIME)@en[[[application/owl+xml]]]]
-- [CITE[OWL 2 Web Ontology Language XML Serialization (Second Edition)]] ([TIME[2012-12-09 23:47:30 +09:00]] 版) <http://www.w3.org/TR/2012/REC-owl2-xml-serialization-20121211/#Appendix:_Internet_Media_Type.2C_File_Extension.2C_and_Macintosh_File_Type>
- [881] [[OWL]] [CODE(MIME)@en[[[text/owl-manchester]]]]
-- [CITE[OWL 2 Web Ontology Language Manchester Syntax (Second Edition)]] ([TIME[2012-12-09 23:47:26 +09:00]] 版) <http://www.w3.org/TR/2012/NOTE-owl2-manchester-syntax-20121211/#Appendix:_Internet_Media_Type.2C_File_Extension_and_Macintosh_File_Type>
- [882] [[OWL]] [CODE(MIME)@en[[[text/owl-functional]]]]
-- [CITE[OWL 2 Web Ontology Language Structural Specification and Functional-Style Syntax (Second Edition)]] ([TIME[2012-12-10 01:13:39 +09:00]] 版) <http://www.w3.org/TR/2012/REC-owl2-syntax-20121211/#Appendix:_Internet_Media_Type.2C_File_Extension.2C_and_Macintosh_File_Type>
]REFS]
** SQL
[REFS[
- [891] [CODE(MIME)@en[[[application/sql]]]] ([[SQL]])
-- [CITE@en[RFC 6922 - The application/sql Media Type]] ([TIME[2013-08-04 17:13:41 +09:00]] 版) <http://tools.ietf.org/html/rfc6922#section-3>
]REFS]
** [CODE(MIME)@en[charset]] を定義しないと明記しているもの
[906] [CODE(MIME)@en[[[application/json]]]] (>>305) では [CODE(MIME)@en[[[charset]]]] [[引数]]がしばしば用いられていますが、
[[RFC 7159]] は [CODE(MIME)@en[[[charset]]]] [[引数]]がないと明記しています。
[REFS[
- [905] [CITE@en[RFC 7159 - The JavaScript Object Notation (JSON) Data Interchange Format]] ([TIME[2014-03-07 18:11:43 +09:00]] 版) <http://tools.ietf.org/html/rfc7159>
]REFS]
;; [100] 現実については [CODE(MIME)@en[[[application/json]]]] を参照。
* 歴史
** RFC 1345
[124] 後の [[IANA charset]] の元となったものを定義していたのが [DFN[[[RFC 1345]]]]
でした。
- 2002-09-23 (Mon) 11:42:47 ''[[名無しさん]]'' : RFC 1345 の charset 表の前半の [[ISO-IR]] 典拠のは、かなりが嘘 charset。
- 2002-09-23 (Mon) 11:43:22 ''[[名無しさん]]'' : 補助[[文字集合]]があたかも単独で使われるような書き方がしてある。
- 2002-09-23 (Mon) 11:44:21 ''[[名無しさん]]'' : 十数個の charset はこのかた一度もつかわれてないに違いない。
- 2002-09-23 (Mon) 11:46:07 ''[[名無しさん]]'' : 作った当時の [[ietf-822]]ext の記事読んでみたけど、まあ仕方無かったのかなぁ。
- 2002-09-23 (Mon) 11:46:45 ''[[名無しさん]]'' : あと、表の g0esc みたいな項目は、単なる参考情報で charset 自体には関係ない。
- 2002-09-23 (Mon) 11:47:20 ''[[名無しさん]]'' : 1345 charsets はすべて平面上の文字集合。
- 2002-09-23 (Mon) 11:48:42 ''[[名無しさん]]'' : 4つの[[多バイト文字集合]]は制御文字が定義されてない。 (説明もそう言ってる。でもって表には G0 で示してある、と。)
- 2002-09-23 (Mon) 11:50:06 ''[[名無しさん]]'' : そのままでは使い物にならないことを半ば承知の上で定義したんじゃないかと思う。 ietf-822ext の過去の記事を読んだ上でそう思った。
** MIME
[FIG(quote)[
[FIGCAPTION[
[105] [[RFC 2046]]
A critical parameter that may be specified in the Content-Type field
for "text/plain" data is the character set. This is specified with a
"charset" parameter, as in:
"text/plain" データの Content-Type 領域に指定しても良いパラメーターは
文字集合です、これは "charset" パラメーターで次のように指定します。
[PRE[
Content-type: text/plain; charset=iso-8859-1
]PRE]
Unlike some other parameter values, the values of the charset
parameter are NOT case sensitive. The default character set, which
must be assumed in the absence of a charset parameter, is US-ASCII.
他の幾つかのパラメーター値とは違って、 charset パラメーターの値は
大文字・小文字を区別'''しません'''。 charset パラメーターが無い場合に
仮定しなければならない既定の文字集合は、 US-ASCII です。
[PRE[
The specification for any future subtypes of "text" must specify
whether or not they will also utilize a "charset" parameter, and may
possibly restrict its values as well. For other subtypes of "text"
than "text/plain", the semantics of the "charset" parameter should be
defined to be identical to those specified here for "text/plain",
i.e., the body consists entirely of characters in the given charset.
In particular, definers of future "text" subtypes should pay close
attention to the implications of multioctet character sets for their
subtype definitions.
]PRE]
将来の "text" の亜型の仕様は "charset" パラメーターを利用するかどうか
規定しなければなりません。また、その値を制限しても構いません。
"text/plain" 以外の "text" 亜型には、 "charset" パラメーターの意味は
ここで "text/plain" 用に既定するのと同じ様に定義するべきです。
つまり、本文は完全に与えた charset で構成されます。特に、
将来の "text" 亜型の定義者は多オクテット文字集合とその亜型定義
との関係についてしっかり注意するべきです。
[PRE[
The charset parameter for subtypes of "text" gives a name of a
character set, as "character set" is defined in RFC 2045. The rules
regarding line breaks detailed in the previous section must also be
observed -- a character set whose definition does not conform to
these rules cannot be used in a MIME "text" subtype.
]PRE]
"text" 亜型の charset パラメーターは文字集合の名前を与えます。
ここで「文字集合 character set」は RFC 2045 で定義したものです。
前の節で詳しく述べた改行に関する規則にも注意して下さい。
この規則に適合しない文字集合は MIME "text" 亜型で使うことは出来ません。
An initial list of predefined character set names can be found at the
end of this section. Additional character sets may be registered with IANA.
予め定義した文字集合名はこの節の終わりにあります。追加の文字集合を
IANA で登録しても構いません。
Other media types than subtypes of "text" might choose to employ the
charset parameter as defined here, but with the CRLF/line break
restriction removed. Therefore, all character sets that conform to
the general definition of "character set" in RFC 2045 can be
registered for MIME use.
"text" の亜型以外の媒体型もここで定義した charset パラメーターを使う
ことにしても構いませんが、 CRLF/改行制限は削除されます。
ですから、 RFC 2045 の「文字集合 character set」の定義に適合する
全ての文字集合を MIME で使用するのに登録出来ます。
[PRE[
Note that if the specified character set includes 8-bit characters
and such characters are used in the body, a Content-Transfer-Encoding
header field and a corresponding encoding on the data are required in
order to transmit the body via some mail transfer protocols, such as
SMTP [RFC-821].
]PRE]
なお、指定文字集合が8ビット文字を含んでいてそのような文字が本文で
使われている場合、 Content-Transfer-Encoding 頭領域と対応するデータの符号化
が本文を SMTP のような幾つかのメイル転送プロトコルで転送するために
施す必要があります。
[PRE[
The default character set, US-ASCII, has been the subject of some
confusion and ambiguity in the past. Not only were there some
ambiguities in the definition, there have been wide variations in
practice. In order to eliminate such ambiguity and variations in the
future, it is strongly recommended that new user agents explicitly
specify a character set as a media type parameter in the Content-Type
header field. "US-ASCII" does not indicate an arbitrary 7-bit
character set, but specifies that all octets in the body must be
interpreted as characters according to the US-ASCII character set.
National and application-oriented versions of ISO 646 [ISO-646] are
usually NOT identical to US-ASCII, and in that case their use in
Internet mail is explicitly discouraged. The omission of the ISO 646
character set from this document is deliberate in this regard. The
character set name of "US-ASCII" explicitly refers to the character
set defined in ANSI X3.4-1986 [US- ASCII]. The new international
reference version (IRV) of the 1991 edition of ISO 646 is identical
to US-ASCII. The character set name "ASCII" is reserved and must not
be used for any purpose.
]PRE]
既定の文字集合 US-ASCII は過去より混乱と曖昧がありました。定義に曖昧性がある
だけではなく、慣習上多様な変種があります。将来このような曖昧性と変種を
取り除くため、新しい利用者代理者は明示的に文字集合を Content-Type
頭領域の媒体型パラメーターとして指定することを強く推奨します。 "US-ASCII"
は任意の7ビット文字集合を示すのではなく、本文の
全てのオクテットを US-ASCII 文字集合によって文字として解釈しなければならない
と指定します。国家・応用指向の ISO 646 の版は一般に US-ASCII
と同一では'''なく'''、この場合 Internet メイルでの利用は明白に非推奨です。
ISO 646 文字集合をこの文書から省いたのは、このためわざとそうしたのです。
"US-ASCII" の名前の文字集合は明白に、 ANSI X3.4-1986 で定義された文字集合を
参照します。 ISO 646 の 1991 年版の新しい国際基準版 (IRV) は US-ASCII
と同一です。文字集合名 "ASCII" は保留され、どんな目的にも使ってはいけません。
[PRE[
NOTE: RFC 821 explicitly specifies "ASCII", and references an earlier
version of the American Standard. Insofar as one of the purposes of
specifying a media type and character set is to permit the receiver
to unambiguously determine how the sender intended the coded message
to be interpreted, assuming anything other than "strict ASCII" as the
default would risk unintentional and incompatible changes to the
semantics of messages now being transmitted. This also implies that
messages containing characters coded according to other versions of
ISO 646 than US-ASCII and the 1991 IRV, or using code-switching
procedures (e.g., those of ISO 2022), as well as 8bit or multiple
octet character encodings MUST use an appropriate character set
specification to be consistent with MIME.
]PRE]
[PRE[
The complete US-ASCII character set is listed in ANSI X3.4- 1986.
Note that the control characters including DEL (0-31, 127) have no
defined meaning in apart from the combination CRLF (US-ASCII values
13 and 10) indicating a new line. Two of the characters have de
facto meanings in wide use: FF (12) often means "start subsequent
text on the beginning of a new page"; and TAB or HT (9) often (though
not always) means "move the cursor to the next available column after
the current position where the column number is a multiple of 8
(counting the first column as column 0)." Aside from these
conventions, any use of the control characters or DEL in a body must
either occur
]PRE]
[PRE[
(1) because a subtype of text other than "plain"
specifically assigns some additional meaning, or
]PRE]
[PRE[
(2) within the context of a private agreement between the
sender and recipient. Such private agreements are
discouraged and should be replaced by the other
capabilities of this document.
]PRE]
[PRE[
NOTE: An enormous proliferation of character sets exist beyond US-
ASCII. A large number of partially or totally overlapping character
sets is NOT a good thing. A SINGLE character set that can be used
universally for representing all of the world's languages in Internet
mail would be preferrable. Unfortunately, existing practice in
several communities seems to point to the continued use of multiple
character sets in the near future. A small number of standard
character sets are, therefore, defined for Internet use in this
document.
]PRE]