* form 要素 accept-charset 属性 (HTML, XHTML 1)
[1] [[HTML]] の [CODE(HTMLe)[[[form]]]] 要素の
[DFN[[CODE(HTMLa)[accept-charset]] 属性]]は、
[[フォーム処理エージェント]]が受け付ける [[charset]]
を指定します。
[16] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[form]] 要素 [CODE(HTMLa)[accept-charset]] 属性
-- [CITE[HTML 4 Changes]]
[[#comment]]
** 属性値
[7] この属性の値は [CODE(SGML)[%[[Charsets]]]] です。
つまり、 [[charset]] 名 ([CODE(SGML)[%[[Charset]]]])
を任意個、[[間隔]][[及び/又は]][[読点]]で分離したものです。
大文字・小文字は区別しません。 [[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。
[SRC[HTML 4 17.3]]
この値並びは、排他的論理和と解釈しなければなりません [SRC[HTML 4 17.3]]。
つまり、鯖は指定された charset のどれか1つを使って符号化することを要求しています。
[2] この属性は省略可能です。省略時の既定値は予約値 [CODE[UNKNOWN]]
です (DTD 的には [CODE(SGML)[#[[IMPLIED]]]] となっています)。
[[UA]] は、これを[Q[その [CODE(HTMLe)[form]] を転送するのに使った文字符号化]]
と解釈しても構いません。 [SRC[HTML 4 17.3]]
ところで [SAMP[unknown]] 値を予約しているのは誰でしょうか。 HTML 4
でしょうか。少なくても [[IANAREG]]
には予約されているというようなことは書かれていません。
[17]
[[HTML 4]] [[DTD]] では [CODE(HTMLa)[accept-charset]]
[[属性]]は [CODE(SGML)[%[[Charsets]]]]
型になっています。そして [[HTML 4]]
[[DTD]] の[[注釈]] (参考), [[XHTML 1]]
[[DTD]] の[[注釈]] (規定), [[XHTML m12n]]
[[抽象モジュール]]定義に於ける属性型の定義 (規定)
では[[間隔]]で分離するとしか説明がありません。
([[名無しさん]])
[23]
+ [[XHTML m12n]] [[DTD]] [[モジュール]]の[[注釈]] (規定)
([[名無しさん]])
[[#comment]]
** UA による利用
[4] この属性の値は、フォームの提出の際に文字符号化の決定に使われます。
詳しくはフォームの[[提出]]の説明を参照してください。
[5] UA は、利用者に [CODE(HTMLa)[accept-charset]] 属性値を助言して構いません。
また、 [CODE(HTMLa)[accept-charset]] に応じて認識できない文字
(特定の charset で表現できない文字のことか?)
の入力を制限しても構いません。 [SRC[HTML 4 17.3]]
[[#comment]]
** 不思議解釈
[3] >>17 の通り、属性値内の charset 名は間隔と読点で分離します。
(実装はゆるく解釈して[[間隔]]文字ではなく[[空白]]としているかもしれません。)
しかし、世間一般には、 charset 名は間隔で区切らなければならないのだとか、
あるいは読点で区切らなければならないのだとかいう風説が流布しています。
[[#comment]]
** 関連
[6] '''[CODE(HTTP)[Accept-Charset:]] 頭欄''':
意味的に似ている [[HTTP]] の [CODE(HTTP)[[[Accept-Charset]]:]]
欄とは違って、 [CODE(HTTP)[[[q]]]] 値の指定はできません。
多くの UA は前から順に使えるかどうか調べている模様です。
[12] '''[CODE(HTMLa)[enctype]] 属性''':
[CODE(HTMLa)[accept-charset]] 属性が特に設けられる以前は、
[CODE(HTMLa)[[[enctype]]]] 属性の値の[[媒体型]]に
[CODE(MIME)[[[charset]]]] 引数として受付け charset
名 (1つだけ) を指定することが行われていました。
[9] '''提出''':
[[フォーム]]の[[提出]]処理との関係
([CODE(HTMLa)[[[action]]]], [CODE(HTMLa)[[[method]]]],
[CODE(HTMLa)[[[enctype]]]], [CODE(HTMLa)[[[accept]]]] などとの関係)、
特に指定された charset で表現できない文字の取扱いなどについては、
フォームの[[提出]]の説明を参照してください。
[[#comment]]
** 例
[18] 一般的な日本語用フォームの場合:
[PRE(HTML example code)[