[12] かつて、フォーム提出で使用した文字コードを記述するために
_charset_
という名前の特別なフォーム制御子が使われていました。
[13] 現在となっては常に UTF-8 を用いるのが普通です。
[14] 今でも Webブラウザーは _charset_
に対応していますが、
敢えて使う必要はほとんど残っていませんし、ライブラリーなどであっても対応していないことが少なくありません。
[1] IE には <
を input
type
="hidden" name
="_charset_"/>form
要素中に潜ませておくと query
や application/x-www-form-urlencoded
に _charset_=charset 名
を入れてくれるという機能があります。 (WinIE5+)
[2] Bug 18643 - add support for _charset_ field in form submissions [form sub] <http://bugzilla.mozilla.org/show_bug.cgi?id=18643> : Mozilla でも実装しようかどうしようか、という話題。 実装されたみたいです。
[3] この hack、 WinIE3 とかの古いブラウザは黙って
_charset_=&other-param=value
にしてくれるから安心・・・と思いきや、
NC 4.01 で試してみたらなぜか
_charset_=++&other-param=value
になりました。
value
なしの hidden
form control はどんな name
でもこうなります。
HTML の仕様上、この文脈で
value
は本来必須なのですから、それが欠けている場合にどうなろうと実装依存なのでしょうけど、
なんでわざわざ ++
なんかを補うのか謎です。不具合でしょうかねぇ。
・・・という、未対応 UA の挙動が確定しないという問題がありますから、 _charset_ hack の信頼は避けた方が無難です。
例えば、鯖内で動くスクリプトの文字コード変換ルーチンを通す時には、 あらかじめ _charset_ 値を確認して、 明らかに異常な場合は捨てないと、 誤動作する虞があるでしょう。
[4] Web Forms 2.0 ( 版) <http://www.whatwg.org/specs/web-forms/current-work/#unacceptableCharacters>
[5] HTML5 に入ります <http://www.w3.org/TR/html5/forms.html#url-encoded-form-data>
[6] HTML5 Revision Tracker ( 版) <http://html5.org/tools/web-apps-tracker?from=4976&to=4977>
[8] RFC 7578 (multipart/form-data
) も言及しています。
[7] RFC 7578 - Returning Values from Forms: multipart/form-data ( 版) <https://tools.ietf.org/html/rfc7578>
[9] Fix #32: use the encoding name exposed by DOM and HTML <form> · whatwg/encoding@18bf4fa ( 版) <https://github.com/whatwg/encoding/commit/18bf4fa6f005a899696800a8f6b0d20f3a4c1c0e>
[10] Editorial: Clarify <input name=_charset_> behavior (sideshowbarker著, ) <https://github.com/whatwg/html/commit/dca408ce9114c80a203dca571ff06aba4045ae47>
[11] Clarify package data algorithm for FormData (eehakkin著, ) <https://github.com/whatwg/fetch/commit/e03ee6fc7f6234005a058d9784e95861b9a0a301>
[15] Parse application/x-www-form-urlencoded using UTF-8 only (annevk著, ) <https://github.com/whatwg/url/commit/3fe969679f78c92c353047661b0c4b6797f099f6>
[16] Remove _charset_ handling from application/x-www-form-urlencoded (tkent-google著, ) <https://github.com/whatwg/url/commit/5c0d2ec09ec16099e5c453d088fea9b8ba0154a5>
[17] Remove _charset_ handling. by tkent-google · Pull Request #382 · whatwg/url () <https://github.com/whatwg/url/pull/382>
[18] Move _charset_ handling to construct the form data set (tkent-google著, ) <https://github.com/whatwg/html/commit/8c212e549607a41b6d40d953b47d9f3e749533f3>
[19] <input type=hidden name=_charset_> doesn't match to browser implementations · Issue #3560 · whatwg/html () <https://github.com/whatwg/html/issues/3560>
[20] Move _charset_ handling from "multipart/form-data encoding algorithm"… by tkent-google · Pull Request #3645 · whatwg/html () <https://github.com/whatwg/html/pull/3645>
[21] Move _charset_ handling from "multipart/form-data encoding algorithm"… by tkent-google · Pull Request #3645 · whatwg/html () <https://github.com/whatwg/html/pull/3645>