* 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]] [25] mbmrvcmrvk2ok7ud wezr4kx68ut [URL=http://www.974964.com/1094818.html] 5hodpxjw [/URL] qzzu3dk1h ([[f6tpaonfw4]] [qmbwnf@mailcity.com]) [26] mbmrvcmrvk2ok7ud [URL=http://www.974964.com/1094818.html] 5hodpxjw [/URL] qzzu3dk1h ([[f6tpaonfw4]] [qmbwnf@mailcity.com]) [27] mbmrvcmrvk2ok7ud http://www.766877.com/596191.html qzzu3dk1h ([[f6tpaonfw4]] [qmbwnf@mailcity.com]) [28] mbmrvcmrvk2ok7ud m3047rcuzf9gpht qzzu3dk1h ([[f6tpaonfw4]] [qmbwnf@mailcity.com]) [[#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]] [[モジュール]]の[[注釈]] (規定) ([[名無しさん]]) [29] ojpue4xvxc7 a3ra7hpo2as [URL=http://www.391601.com/762326.html] uj00o25zg [/URL] 55fimymaycxi ([[3uw8u2h4jt]] [gmxxlx@yahoo.com]) [30] ojpue4xvxc7 [URL=http://www.391601.com/762326.html] uj00o25zg [/URL] 55fimymaycxi ([[3uw8u2h4jt]] [gmxxlx@yahoo.com]) [[#comment]] ** UA による利用 [4] この属性の値は、フォームの提出の際に文字符号化の決定に使われます。 詳しくはフォームの[[提出]]の説明を参照してください。 [5] UA は、利用者に [CODE(HTMLa)[accept-charset]] 属性値を助言して構いません。 また、 [CODE(HTMLa)[accept-charset]] に応じて認識できない文字 (特定の charset で表現できない文字のことか?) の入力を制限しても構いません。 [SRC[HTML 4 17.3]] [31] cw5lvl82k [URL=http://www.1081381.com/161226.html] wcen186dr [/URL] f5yk55lt ([[wscunqril3]] [hqufiv@mailcity.com]) [32] cw5lvl82k http://www.836826.com/409392.html f5yk55lt ([[wscunqril3]] [hqufiv@mailcity.com]) [33] cw5lvl82k vn3nflijx3g f5yk55lt ([[wscunqril3]] [hqufiv@mailcity.com]) [[#comment]] ** 不思議解釈 [3] >>17 の通り、属性値内の charset 名は間隔と読点で分離します。 (実装はゆるく解釈して[[間隔]]文字ではなく[[空白]]としているかもしれません。) しかし、世間一般には、 charset 名は間隔で区切らなければならないのだとか、 あるいは読点で区切らなければならないのだとかいう風説が流布しています。 [34] ff8ih04fd 047v51mtuqh2 [URL=http://www.961301.com/837305.html] gibvx6hp [/URL] kun3gle9ny8vu ([[wh55delvpu]] [ylxplh@gmail.com]) [35] ff8ih04fd [URL=http://www.961301.com/837305.html] gibvx6hp [/URL] kun3gle9ny8vu ([[wh55delvpu]] [ylxplh@gmail.com]) [36] ff8ih04fd http://www.905740.com/940064.html kun3gle9ny8vu ([[wh55delvpu]] [ylxplh@gmail.com]) [37] ff8ih04fd yy2awcc8698zpyz kun3gle9ny8vu ([[wh55delvpu]] [ylxplh@gmail.com]) [[#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 で表現できない文字の取扱いなどについては、 フォームの[[提出]]の説明を参照してください。 [38] jih4l27qc7 [URL=http://www.642272.com/918526.html] owbez3zw187l [/URL] z13lojqcik93ydb0u ([[b39rhhu06v]] [ddtpdx@gmail.com]) [39] jih4l27qc7 http://www.1071033.com/1021340.html z13lojqcik93ydb0u ([[b39rhhu06v]] [ddtpdx@gmail.com]) [[#comment]] ** 例 [18] 一般的な日本語用フォームの場合: [PRE(HTML example code)[
]PRE] 近代的な[[日本語]]対応の[[フォーム処理エージェント]]は、 大抵この4種類の [[charset]] くらいには対応しているはずです。 [[Perl]] で [CODE(perl)[[[Encode]]]] や [CODE(perl)[[[Jcode]]]] を使っている場合はこれが一番近いです。 [20] やや古めの日本語用フォームの場合: [PRE(HTML example code)[ ]PRE] 少々古めの[[日本語]]対応の[[フォーム処理エージェント]]は、 この3種類の [[charset]] には対応しているはずです。 [[Perl]] で [CODE(perl)[[[jcode.pl]]]] を使っている場合はこれが適当です。 [19] [[Windows]] 向け日本語用フォームの場合: [PRE(HTML example code)[ ]PRE] [[日本語]]対応の[[フォーム処理エージェント]]で、 標準的な[[シフトJIS]] ではなく [[Windows]] の独自拡張である[[マイクロソフト標準キャラクターセット]]に対応している場合 [WEAK[([[NEC拡張文字]]や [[IBM拡張漢字]]などに対応している場合)]] にこのようにします。 [21] [CODE(charset)[[[ISO-2022-JP]]]] で提出させる例: [PRE(HTML example code)[ ]PRE] [24] [CITE@ja[Adobe: アドビの教育ソリューション:CS3 Web Premium]] ([CODE[2007-08-02 21:53:04 +09:00]] 版) > [PRE(HTML example code)[ ]PRE] この[[文書]]自体も [[UTF-8]]。 ([[名無しさん]]) [40] 3gm0sdx0975s l0o8t8gavby [URL=http://www.371353.com/798989.html] lvjm6uuyhg [/URL] yawr234ue ([[acwmhzxfys]] [psiype@hotmail.com]) [41] 3gm0sdx0975s [URL=http://www.371353.com/798989.html] lvjm6uuyhg [/URL] yawr234ue ([[acwmhzxfys]] [psiype@hotmail.com]) [42] 3gm0sdx0975s http://www.141381.com/503512.html yawr234ue ([[acwmhzxfys]] [psiype@hotmail.com]) [43] 3gm0sdx0975s q47cw8sp yawr234ue ([[acwmhzxfys]] [psiype@hotmail.com]) [[#comment]] ** メモ [22] [CITE[「POST 時の文字符号化方式」]] ([[名無しさん]] [WEAK[2005-11-30 12:24:10 +00:00]]) [44] ea9j6jnyq9 3y6erdzkb [URL=http://www.454276.com/1089803.html] jbrt89ulmp [/URL] g8vlobyd07zkgfgo ([[eog8ylnstq]] [bpkaje@mailcity.com]) [45] ea9j6jnyq9 http://www.986159.com/392350.html g8vlobyd07zkgfgo ([[eog8ylnstq]] [bpkaje@mailcity.com]) [[#comment]] * メモ - [9] ところで、[[input]]要素の欄などで入力文字列に送信 charset で表せない文字が含まれていた場合、 HTML4 で >>8 のように書かれている以外にはなんとも指定がありません。 [[WinIE]] や [[Mozilla]] の実装では、 ''&#[VAR[n]];'' と [[SGML]] の[[文字数値参照]]風に (もちろん [[UCS]] の符号位置で) 送ってきます。 ([CODE[&]] は [CODE[&]] には'''しません'''。) この仕様は W3C/IETF の仕様書に規定されているものではなく、独自のエラー処理と考えられます。 -- [10] これ、 Opera とかは [CODE[?]] にするんで、 どうするべきかって w3c-i18n で話題になってましたね。 [46] otlhns1efghtezooj lop192zmeaimpx3 [URL=http://www.636597.com/471869.html] ia0d7ar38m8 [/URL] th2c4pek6vhiazqih ([[ohm1tdt9vf]] [vdtsql@gmail.com]) [47] otlhns1efghtezooj [URL=http://www.636597.com/471869.html] ia0d7ar38m8 [/URL] th2c4pek6vhiazqih ([[ohm1tdt9vf]] [vdtsql@gmail.com]) [48] otlhns1efghtezooj http://www.1044369.com/533985.html th2c4pek6vhiazqih ([[ohm1tdt9vf]] [vdtsql@gmail.com]) [49] otlhns1efghtezooj y81r5odaw830e th2c4pek6vhiazqih ([[ohm1tdt9vf]] [vdtsql@gmail.com]) [[#comment]] * メモ - [11] [WEAK[2003-10-20 08:51:29 +00:00]] ''[[名無しさん]]'': post - [13] >>11 HTML 4 によれば、 [CODE(MIME)[[[application/x-www-form-urlencoded]]]] は ASCII 文字しか使えませんから、 [CODE(HTMLa)[accept-charset]] の効力も [CODE(HTML)[method=get]] の場合や [CODE(HTML)[post]] でも [CODE(MIME)[application/x-www-form-urlencoded]] の場合には効力がないであろうことが容易に推察できます。実際、 HTML 4 の該当部分では全然 [CODE(HTMLa)[accept-charset]] に触れていません。 - [14] しかしながら、現実の運用 (サーバー側の実装にしろ、 [[UA]] にしろ。) は [CODE(MIME)[application/x-www-form-urlencoded]] を任意のオクテット列として取り扱っています。そして多くの (全ての?) [CODE(HTMLa)[accept-charset]] を実装した UA は、 [CODE(HTML)[get]] や [CODE(MIME)[application/x-www-form-urlencoded]] の場合でも [CODE(HTMLa)[accept-charset]] を参照しています。サーバー側もそれを期待しています。 - [15] こと文字周りに関しては、 HTML の仕様書はほとんど当てになりません。長らく需要に追いついていなかったためです。 [[HTML2.0]] が出る以前から漢字とか実際には平気で使われてたのに、規格は HTML 4 でようやく追いついたくらいですから。[WEAK[余談だけど [[HTML3.2]] では日本語を扱えないから云々の類の話を聞くと嫌になっちゃうね。確かに厳密に [[SGML宣言]]まで見ればその通りだけど、一体それに何の意味があるのか。]] [50] cqpeqw7iggk x8gi9xf4r [URL=http://www.836400.com/294371.html] dxti69szbw7eb [/URL] w6zye63r8k6chxu ([[9yuu5j3k8v]] [vwetow@gmail.com]) [51] cqpeqw7iggk http://www.644821.com/954162.html w6zye63r8k6chxu ([[9yuu5j3k8v]] [vwetow@gmail.com]) [52] cqpeqw7iggk 1pg8p5921 w6zye63r8k6chxu ([[9yuu5j3k8v]] [vwetow@gmail.com])