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