<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="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> で用いられている、 <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> と2桁の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数</anchor>によって<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><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">percent-encoding</rt></rubyb></dfn>といいます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> 以前は <dfn xmlns="http://www.w3.org/1999/xhtml">URI <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エスケープ<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">escape</rt></rubyb></dfn>、
<dfn xmlns="http://www.w3.org/1999/xhtml">URL <ruby>符号化<rt>エンコーディング</rt><rt xml:lang="en">encoding</rt></ruby></dfn>などとも呼ばれていました。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="66" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[66]</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>したり、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>したりするには、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Charinfo</anchor> をお使いください:<refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="65" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[65]</anchor-end> <cite xml:lang="en">Charinfo — &quot;&quot;</cite> (<time>2015-04-12 18:14:40 +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://chars.suikawiki.org/string">https://chars.suikawiki.org/string</anchor-external></li></ul></refs></comment-p><section><h1>古い情報の見分け方</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="182" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[182]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>をめぐっては、古い情報や誤った情報が蔓延しています。
権威のありそうな文書を引用したり、さも当然のように断定したりしているのが、
事実とまったく正反対の説明だったりもするので、注意しなければなりません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="183" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[183]</anchor-end> 次のような条件に当てはまるものは、<strong>誤った情報の可能性が高い</strong>です。</p><ul><li>古い<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>に言及: 「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor>」 「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor>」 「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">W3C</anchor>」</li><li>古い用語で説明: 「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URLエンコーディング</anchor>」「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URIエスケープ</anchor>」「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI符号化</anchor>」「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRI</anchor>」</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォームデータ</anchor>を混同している</li><li>「<var>○○</var> (有名実装) は現在の仕様に合っていない」と断定</li></ul></section><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <strong><cite xml:lang="en-US">URL Standard</cite> (<time>2014-04-15 13:16:21 +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://url.spec.whatwg.org/#percent-encoded-bytes">https://url.spec.whatwg.org/#percent-encoded-bytes</anchor-external></strong></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="144" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[144]</anchor-end> <cite>ECMAScript® 2017 Language Specification</cite> (<time>2016-06-04 05:39: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://tc39.github.io/ecma262/#sec-uri-handling-functions">https://tc39.github.io/ecma262/#sec-uri-handling-functions</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <cite xml:lang="en">RFC 5849 - The OAuth 1.0 Protocol</cite> (<time>2014-12-28 14:19:21 +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://tools.ietf.org/html/rfc5849#section-3.6">http://tools.ietf.org/html/rfc5849#section-3.6</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> および <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code>
における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL Standard</anchor> で規定されています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> および関連する概念が厳密に規定されてこなかった歴史的経緯から、
それ以外のいくつかの仕様書にも類似した規定が含まれています。</p></section><section><h1>呼称</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>は、歴史的に <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI 符号化<rt xmlns="http://www.w3.org/1999/xhtml">URI encoding</rt></rubyb></dfn>、
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI 逃避符号化<rt xmlns="http://www.w3.org/1999/xhtml">URI escape(d) encoding</rt></rubyb></dfn>、
<dfn>URI <ruby>逃避<rt>エスケープ</rt><rt>escape</rt></ruby></dfn>など色々な呼ばれ方をしてきました。
<abbr><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor><title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">統一資源識別子</title></abbr> の第4次規格である <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターネット標準</anchor>) が以前の用語にかえて<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化<rt xmlns="http://www.w3.org/1999/xhtml">percent‐encoding</rt></rubyb></dfn>という用語を採用したため、
現行仕様である <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WHATWG</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL Standard</anchor> もそれを踏襲しています <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src>。</p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</anchor-end> <code class="URI">%<var>HH</var></code> という表記のことを、 UR[IL] escape という流儀と UR[IL] encode という流儀があります。仕様書にも混在していて、有意な使い分けも認められません。早い話がどっちでもいいということです。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="46" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[46]</anchor-end> あ、でも、最新の URI の定義である <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2396</anchor> では整理されていて、 
URI 符号化の意味の encode は必ず <q>escaped encoding</q>
という語で登場します。 <q>octet encoding</q> と対になっています。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="47" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[47]</anchor-end> 2396 に「URI encoding」という語がないことからこれを誤りで「URI escape」が正しいとする論もありますけどナンセンスですね。正確を期すなら「URI escape encoding」とフルスペって初めて意味を成す。 URI escape encoding にするという意味の動詞なら「URI escape する」でもいいとは思いますがね。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[76]</anchor-end> 俗に、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エスケープシーケンス</anchor>と呼ぶこともあります。</p></history></section><section><h1>構文</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="97" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[97]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>では、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> と二桁の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数字</anchor>によって一つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット</anchor>を表します。 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code>
はそれ以外では使ってはいけませんが、もし使われた場合、そのものを表します。 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code>
以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>あるいは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット</anchor>は、そのものを表します。</p><figure class="railroad"><ol><li>*<ol><li>|<ol><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> 以外</li><li>=<ol><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数字</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数字</anchor></li></ol></li></ol></li></ol></li></ol></figure><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="67" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[67]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>された3<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>の列は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 2396</anchor> では <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">escaped</anchor></code>、
それより前は <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">escape</anchor></code> という <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">生成規則</anchor>で定義されていました。</p></history><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="77" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[77]</anchor-end> 何を <code>%</code> を使って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>し、何を元のまま残すかは、文脈によります。
個々の事情があるので、無条件にどれが正しいというものでもありません。</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="78" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[78]</anchor-end> 例えば <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">https:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">path segment</anchor> 部分では、
互いの区切りの <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">/</anchor></code> は <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%2F</anchor></code> としなければなりません。
また <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor> との区切りの <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">?</anchor></code> も、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%3F</anchor></code> としなければなりません。
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">@</anchor></code> は区切りとして使われませんから、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">@</anchor></code>
のままでも構いませんし、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%40</anchor></code> でも構いません。</p></example><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;59</anchor-internal> を参照。</comment-p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="174" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[174]</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:">RFC</anchor> などを引用していても、
誤ったものを誤って解釈したり、十数年も前の古いものを参照していたりしますから、
下手に信用するのは危険です。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="108" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[108]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化バイト<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">percent-encoded byte</rt></rubyb></dfn>は、
<code>%</code> の後に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII十六進数字</anchor>が2つ続くものです <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src>。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="109" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[109]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml">%</code> も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII十六進数字</anchor>も、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>です。
従って<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化バイト</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>です。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>と名前につくのは、それが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>を表しているからであり、
それ自体は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>ではありません。)</comment-p></section><section><h1>大文字と小文字</h1><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>URL Standard</cite> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>の定義では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数字</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>を使うことになっています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="61" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[61]</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>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>も区別せず<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>されます。</p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><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>
<cite>Bug in w3m-url-encode-string</cite> (<code>2007-05-11 13:00:36 +09:00</code> 版) <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://emacs-w3m.namazu.org/ml/msg09323.html">http://emacs-w3m.namazu.org/ml/msg09323.html</anchor-external></p><p xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webとの互換性</anchor>のためには<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>でなければならないらしい。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> 的に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>でなければならないというのは誤りで、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 4234</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>を区別しない。</comment-p><p xmlns="http://www.w3.org/1999/xhtml">(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2007-05-11 11:19:59 +00:00</weak>)</p></history></section><section><h1>文脈</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="73" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[73]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>は、次の場面で用いられています。</p><figure class="list"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="199" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[199]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>される場面</figcaption><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[95]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="74" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[74]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;90</anchor-internal>)</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI雛形</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">変数名</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<anchor>パーセント符号化</anchor>の一種)</weak></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="64" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[64]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 2.0</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント認証</anchor>としての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基本認証</anchor>
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> 版<anchor>パーセント符号化</anchor>)</weak></li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">引数 (HTTP)</title></anchor>の拡張構文
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<anchor>MIME</anchor> の定義では<anchor>パーセント符号化</anchor>相当のもの、<anchor>HTTP</anchor> の定義では<anchor>パーセント符号化</anchor>)</weak></li><li><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> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Content-Disposition:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>の
<code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">filename</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor> 
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(実装によっては。<code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">filename</anchor></code> を参照。)</weak></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPN:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en">Alt-Svc:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en">Slug:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> <code class="HTTP" xml:lang="en">Label:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor></li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">変種説明</anchor>の <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">description</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>の値</li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特徴タグ</anchor>の値 <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(<anchor>パーセント符号化</anchor>相当)</weak></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="71" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[71]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">multipart/form-data</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RTSP</anchor> <code>conference-id</code></li></ul></figure></section><section><h1>非予約文字の百分率符号化</h1><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>
最後の path segment が <code class="URI">%2E</code> 
または <code class="URI">%2E%2E</code>, <code class="URI">%2E.</code>,
<code class="URI">.%2E</code> な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対参照</anchor>について。 
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</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>
<code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">a</anchor></code> <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">href</anchor></code> にそのような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対参照</anchor>を指定した時の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ステータス・バー</anchor>または<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ツールチップ</anchor>に表示される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対URI参照</anchor>は:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 1.5、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>を解いたもの
(<code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.</anchor></code> や <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">..</anchor></code>)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>されたまま</li></ul></p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</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>
その<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">リンク</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">かちっ</anchor>たときに飛ばされる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アドレス・バー</anchor>の表示や <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">location</anchor>.<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">href</anchor></code>) は:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 1.5、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor>: <code class="URI"><var xml:lang="ja"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底URI</anchor></var>/%2E</code> など、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>のまま</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9: <code class="URI"><var xml:lang="ja"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基底URI</anchor></var>/.</code> など、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>を解いた値</li></ul></p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</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>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal> のような path segment が含まれるものの、最後の path
segment ではない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対参照</anchor> (例えば <code class="URI">%2E/</code>)
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</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>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ステータス・バー</anchor>などの表示:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 1.5、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9: <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.</anchor></code> や
<code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">..</anchor></code> として解釈したときの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対URI参照</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE</anchor> 6: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>されたまま、
特別な意味を持たないと解釈した時の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対URI参照</anchor></li></ul></p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</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>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;5</anchor-internal> 飛ばされる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor>:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 1.5、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9: 特別な意味を持つと解釈した時の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対URI参照</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>されたまま、特別な意味を持たないと解釈した時の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">絶対URI参照</anchor></li></ul></p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</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:">URI scheme</anchor> <q xml:lang="en"><code class="URI" xml:lang="en">http</code></q> の一部または全部が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>されている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI参照</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</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>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;8</anchor-internal> 表示、移動先とも、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 1.5、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor> のいずれも<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対参照</anchor>と解釈
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</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>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> <code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">hostname</anchor></code> の一部または全部が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>されている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI参照</anchor></p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</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>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal>:
表示: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 1.5、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor> とも、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>を解いたもの
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;10</anchor-internal> 移動先:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>を解いた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 1.5:<ul><li><code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">.</anchor></code> が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>されているなら、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>をすべて解いた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</anchor></li><li>そうでないなら、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>されたままの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト</anchor>
(見つからないというエラーになる)</li></ul></li></ul></p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><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:">ポート番号</anchor>の一部または全部が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>されている場合:
表示、移動先とも:<ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor>: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>を解いた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ポート番号</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 1.5: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">百分率符号化</anchor>を解かない状態で、最初の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">数字</anchor>の連続<ul><li>例えば、 <code class="URI">%38%30</code> なら <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">30</anchor></code> と解釈する</li></ul></li></ul></p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</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-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://suika.fam.cx/~wakaba/-temp/test/uri/percent/unreserved/">http://suika.fam.cx/~wakaba/-temp/test/uri/percent/unreserved/</anchor-external>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2007-05-21 05:49:59 +00:00</weak>)</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="ja-JP">akr流(2007-02-22)</cite> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">akr</anchor> 著, <time>2007-02-26 17:00:01 +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://www.codeblog.org/blog/akr/20070222.html">https://www.codeblog.org/blog/akr/20070222.html</anchor-external></p></section><section><h1><code class="URI">%</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="98" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[98]</anchor-end> <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット</anchor>を表す以外では使うことができません。
これは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>のみならず、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> 全体での原則です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="99" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[99]</anchor-end> しかし現実には <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> の後に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数字</anchor>2桁が続かない場合もあります。
そのような場合には、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> そのものを表すと解釈することになっています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="100" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[100]</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>とみなすこともあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> における <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> には次のような特別な使い方もあり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>と混在するかもしれません。<figure class="short list"><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">%u</code>符号化</anchor> (<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal>)</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">proto-URL</anchor> の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%s</anchor></code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォーム提出</anchor>における <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%%</anchor></code> や <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%%%%</anchor></code></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> 長い <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> が途中で分断されるなどの理由で <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> で終わる <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor>
が生成されてしまうことがあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="63" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[63]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メッセージID</anchor>でよく使われる文字である <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code>
を無変換で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の一部に含めてしまい<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メーリングリスト</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">アーカイブ</anchor>などで単独の 
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code> が混入することがあります。</p></section><section><h1><code class="URI" xml:lang="en">+</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[89]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> の仕様より、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>された文字列において <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code>
が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x20</anchor></code> ないしは <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+0020</anchor></code> と解釈されることが多々あります
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラスパーセント符号化</anchor>)。
これは <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> 側の仕様であって、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>の一部ではありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="158" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[158]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> のある部分がただの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>であるか<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラスパーセント符号化</anchor>であるかは、
その部分に関する規定に依存しており、どちらであるかを判断するのは難しい問題ですが、
おおむね次のように決定できます。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="159" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[159]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の一部なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="162" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[162]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">URL query</title></anchor> なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="165" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[165]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL scheme</anchor> が
<code class="URI" xml:lang="en">http:</code>/<code class="URI" xml:lang="en">https:</code>/<code class="URI" xml:lang="en">ws:</code>/<code class="URI" xml:lang="en">wss:</code> なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="166" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[166]</anchor-end> <code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code> の可能性が高い</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="167" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[167]</anchor-end> それ以外なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="168" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[168]</anchor-end> おそらくただの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor></li></ol></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="163" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[163]</anchor-end> それ以外なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="164" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[164]</anchor-end> おそらくただの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor></li></ol></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="160" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[160]</anchor-end> <code>POST</code> データなら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="161" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[161]</anchor-end> <code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code></li></ol></li></ol></figure><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><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> <code class="URI" xml:lang="en">mailto:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">URL query</title></anchor> や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体素片</anchor>は 
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code>
と似ていますが、 <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code> に特別な解釈を与えていません。</p></example><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="169" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[169]</anchor-end> <code class="URI" xml:lang="en">http:</code>/<code class="URI" xml:lang="en">https:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">URL query</title></anchor>
の解釈は、完全に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>側に委ねられています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サーバー</anchor>の管理者や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">開発者</anchor>は、
ただの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>でも、<code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code>
でも、他の独自の形式でも、個々の事情に合わせて任意の形式を採用できます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">クライアント</anchor>は事前情報無しにどちらを利用するべきか決定できません。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">もっとも、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォームの提出</anchor>は <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en">application/x-www-form-urlencoded</code>
に固定されていますから、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Webアプリケーション</anchor>の開発者はそれに合わせた方が楽で無難です。</comment-p></example><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="104" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[104]</anchor-end> ただの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>で <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code>
が <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x20</anchor></code> ないしは <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+0020</anchor></code> と解釈する/させることは誤りです。
ただの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>における <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code> は、
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code> そのものを表します。
(文脈によっては、区切りなど特別な意味が与えられていることもあります。)</p><example xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="79" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[79]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の <code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">encodeURIComponent</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>のためのもので、
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> のためのものではありませんから、
<code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+0020</anchor></code> <code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SPACE</anchor></code> 
は <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code> ではなく、 <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%20</anchor></code> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>されます。</p></example><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="103" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[103]</anchor-end> <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> でも <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%20</anchor></code>
が禁止されているわけではありませんから、常に <code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%20</anchor></code> を使うこととし
<code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code> を使わないとしても、問題はありません。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="173" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[173]</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:">URL</anchor> や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォーム</anchor>の実装や解説の類では、
<code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code> を含めいろいろな<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>のバリエーションについて、
混同して混乱していることがよくあります。<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="85" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[85]</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>したものは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット列</anchor>) です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="86" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[86]</anchor-end> これをどう解釈するかは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>が用いられる文脈によって異なります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="87" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[87]</anchor-end> 近代的な仕様やアプリケーションでは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>として解釈します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="110" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[110]</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>してから <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8 decode without BOM or fail</anchor>
を適用しても<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">失敗</anchor>とならない<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べきです</SHOULD> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="88" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[88]</anchor-end> 歴史的には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> 以外によって解釈されることも多々ありました。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>ではない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>として解釈されることもあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> 一般においては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>が何であるか明記する仕組みはありません。
関連する仕様書によって明示的に規定されていることもあれば、
慣習によることや、受信者の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">自動判別</anchor>に依存していることもあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> では、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">_charset_ hack</anchor> や同様の手法で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>が記述されることもあります。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> 参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;102</anchor-internal> が提案する <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTPヘッダー</anchor>のように外部に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>を明記する手法が提案されたり、
部分的に実装されたりすることもありましたが、広く普及しているものはありません。</p></section><section><h1><code class="URI">%u</code> 符号化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ECMAScript</anchor> によって導入された <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%u</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> での利用が認められたことはありませんが、現在でも稀に用いられます。
詳しくは <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%u</anchor></code> の項をご覧ください。</p></section><section><h1><code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="90" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[90]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>から派生した
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>です。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォームの提出</anchor>で採用されています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="91" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[91]</anchor-end> 詳しくは <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> の項を参照してください。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="92" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[92]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> は単独の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">実体</anchor>として使われる他に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor> として使われることがあります。 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="89" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;89</anchor-internal> の通り、 <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code>
の解釈がただの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>とは異なります。 (この <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">MIME型</anchor>に限らず) 
<code class="URI" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">http:</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor> の解釈はサーバーに委ねられていますから、
当該サーバーや当該サーバーと事前に知識を共有した者以外は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">query</anchor> をどう解釈するべきか確実には決定できません。</p></section><section><h1>パーセント符号化演算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="59" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[59]</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>) の方法は、
入力が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>、あるいは既に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>を含む <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の一部分のいずれであるかにより、
またそれを <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> のどの部分で用いるかにより、色々なバリエーションが存在しています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="60" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[60]</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:">URI符号化</anchor>」
などと曖昧に呼ばれているので、しばしば混同され、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相互運用性</anchor>の問題を生じさせる原因ともなっています。</comment-p><section><h1>基本的な演算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="111" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[111]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor><var>バイト</var>の<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">percent encode</rt></rubyb></dfn>は、
次のようにしなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src>。<figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="112" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[112]</anchor-end> <code>%</code> の後に、2桁の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数</anchor>で<var>バイト</var>を表現したものを連結した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>を返します。</li></ol></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="129" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[129]</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>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>ではなく<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>に関する操作として定義されています。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="113" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[113]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor><var>入力</var>の<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント復号<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">percent decode</rt></rubyb></dfn>は、
次のようにしなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src>。<figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="114" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[114]</anchor-end> <var>出力</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</anchor-end> <var>入力</var>の各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor><var>バイト</var>について順に、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="119" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[119]</anchor-end> <var>バイト</var>が処理済みでなければ、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="116" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[116]</anchor-end> <var>バイト</var>が 0x25 なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="120" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[120]</anchor-end> <var>バイト</var>の次に2<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>あって、それがいずれも
[0x30, 0x39], [0x41, 0x46], [0x61, 0x66] のいずれかの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">範囲</anchor>に含まれるなら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="121" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[121]</anchor-end> <var>復号バイト</var>を、当該2<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8 decode without BOM</anchor>
した結果を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数</anchor>として解釈した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="122" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[122]</anchor-end> <var>復号バイト</var>を<var>出力</var>の末尾に追加します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="123" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[123]</anchor-end> 当該2<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>を処理済みとします。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="124" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[124]</anchor-end> それ以外なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="125" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[125]</anchor-end> <var>バイト</var>を<var>出力</var>の末尾に追加します。</li></ol></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="117" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[117]</anchor-end> それ以外なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="118" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[118]</anchor-end> <var>バイト</var>を<var>出力</var>の末尾に追加します。</li></ol></li></ol></li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="126" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[126]</anchor-end> <var>出力</var>を返します。</li></ol></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="127" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[127]</anchor-end> つまり、 <code xmlns="http://www.w3.org/1999/xhtml">%</code> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII十六進数字</anchor>2桁の列はその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数</anchor>の表す<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>に置換され、
それ以外の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor> (不適切な <code xmlns="http://www.w3.org/1999/xhtml">%</code> も含みます。) はそのまま出力されます。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="128" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[128]</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>で、それをどう解釈するかは呼び出し元に委ねられています。
ただし、<var>入力</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCIIバイト</anchor>以外が含まれる場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8 decode without BOM</anchor> 以外の方法で扱うのは安全ではないかもしれないので、
避ける<SHOULD xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">べき</SHOULD>だ <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src> とされています。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="130" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[130]</anchor-end> <var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor></var>の<var>符号化集合</var>に関する<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8パーセント符号化<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">UTF-8 percent encode</rt></rubyb></dfn>は、
次のようにします <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src>。<figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="131" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[131]</anchor-end> <var>符号位置</var>が<var>符号化集合</var>に含まれ<em>ない</em>なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="132" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[132]</anchor-end> <var>符号位置</var>を返します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="133" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[133]</anchor-end> それ以外なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="134" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[134]</anchor-end> <var>バイト群</var>を、<var>符号位置</var>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8符号化</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="135" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[135]</anchor-end> <var>バイト群</var>の各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor><var>バイト</var>を、
<var>バイト</var>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>した結果に置換します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="136" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[136]</anchor-end> <var>バイト群</var>を返します。</li></ol></li></ol></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="137" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[137]</anchor-end> <var xmlns="http://www.w3.org/1999/xhtml">符号化集合</var>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">集合</anchor>です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL Standard</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">C0制御パーセント符号化集合</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パスパーセント符号化集合</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片パーセント符号化集合</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">userinfoパーセント符号化集合</anchor>が定義されています。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="143" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[143]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8パーセント符号化</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォームの提出</anchor>を除けば、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL構文解析器</anchor>でのみ使われているようです。</p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="193" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[193]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列パーセント復号<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">string percent decode</rt></rubyb></dfn>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor><var>入力</var>を次のようにすることをいいます。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;43</anchor-internal></src></p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="194" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[194]</anchor-end> <var>バイト群</var>を、 <var>入力</var>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8符号化</anchor>した結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="195" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[195]</anchor-end> <var>バイト群</var>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント復号</anchor>した結果を返します。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="201" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[201]</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>ですが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">出力</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>となります。</p><figure class="short list"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="196" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[196]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列パーセント復号</anchor>する場面</figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト構文解析器</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml" class="URI" xml:lang="en">data:</code> URL処理器</anchor></li><li><code>javascript:</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文書の示された場所</anchor></li></ul></figure></section><section><h1><code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code>
は、任意の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字符号化</anchor>によって<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>してから<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>する方法を規定しています。
ここでは 0x20 は <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code> で表す点が通常の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>と異なります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> これに対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>の方法も規定されています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">詳しくは <code xmlns="http://www.w3.org/1999/xhtml" class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> を参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="140" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[140]</anchor-end> <code class="URI" xml:lang="en">mailto:</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> への<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フォームの提出</anchor>では、
<code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code> として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>した後で
<code>+</code> を <code>%20</code> に置換する場合があります。つまり標準的な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>となります。</p></section><section><h1>OAuth 1.0 パーセント符号化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5849</anchor>) は、次のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>の手順を規定しています
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;26</anchor-internal></src>。</p><figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</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:">RFC 3629</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイナリ</anchor>の値には適用しません。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非予約文字</anchor><em>以外</em>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット</anchor>を <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">%</anchor></code>
と2桁の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数字</anchor>の列に置き換えます。</li></ol></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</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:">OAuth 1.0</anchor> における <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Authorization:</anchor></code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ヘッダー</anchor>と、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">署名基底文字列</anchor>で用いられます。 
<code class="MIME" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">application/x-www-form-urlencoded</anchor></code> ではこの方式は使いません。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;26</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>の方法はなぜか明記されていません。 <code class="HTTP" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Authorization:</anchor></code>
では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>も必要なはずですが・・・。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="156" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[156]</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:">OAuth 1.0パーセント符号化</anchor>は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">認証された要求</anchor>の作成で呼び出されます。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="155" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[155]</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:">OAuth 1.0パーセント符号化</anchor>することは無さそうに思いますが、
既に (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">署名</anchor>以外) 作り終えた<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要求</anchor>の一部を取り出して<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">署名基底文字列</anchor>を作成する時、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイナリー</anchor>入力の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>が必要となります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="185" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[185]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AWS</anchor> の<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>UriEncode()</code></dfn>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="184" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;184</anchor-internal></src> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><em xmlns="http://www.w3.org/1999/xhtml">非</em>予約文字</anchor><em>以外</em>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>することを求めています。
これは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor> 方式の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイナリー</anchor>入力を与えた場合と同じです。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="184" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[184]</anchor-end> <cite>Signature Calculations for the Authorization Header: Transferring Payload in a Single Chunk (AWS Signature Version 4) - Amazon Simple Storage Service</cite> (<time>2017-02-11 04:52:51 +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://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html">http://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-header-based-auth.html</anchor-external></li></ul></refs></section><section><h1>JavaScript <code class="JS" xml:lang="en">encodeURI</code> / <code class="JS" xml:lang="en">decodeURI</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[50]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の <dfn><code class="JS" xml:lang="en">encodeURI()</code></dfn> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="144" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;144</anchor-internal></src> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>するものです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サロゲートペア</anchor>でない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サロゲート</anchor>が含まれると、失敗します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="148" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[148]</anchor-end> <dfn><code class="JS" xml:lang="en">decodeURI()</code></dfn> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="144" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;144</anchor-internal></src> は、それに対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>の方法です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">予約文字</anchor>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>されたまま残します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>として、または <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="175" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[175]</anchor-end> これらの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">関数</anchor>が有用な場面は意外とありません。ほとんどの場合は
<code class="URI" xml:lang="en">encodeURIComponent</code>/<code class="URI" xml:lang="en">decodeURIComponent</code>
の方が適切です。</p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="147" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[147]</anchor-end> <cite xml:lang="ja">M.C.P.C.: MacIE5でdecodeURIを実装</cite> (<time>2009-02-03 21:32:43 +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://blog.dtpwiki.jp/dtp/2007/11/macie5decodeuri_d127.html">http://blog.dtpwiki.jp/dtp/2007/11/macie5decodeuri_d127.html</anchor-external></p></history></section><section><h1>JavaScript <code class="JS" xml:lang="en">encodeURIComponent</code> / <code class="JS" xml:lang="en">decodeURIComponent</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="150" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[150]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の <dfn><code class="JS" xml:lang="en">encodeURIComponent()</code></dfn> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="144" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;144</anchor-internal></src> は、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>するものです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サロゲートペア</anchor>でない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サロゲート</anchor>が含まれると、失敗します。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="187" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[187]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8パーセント符号化</anchor>を特定の<var xmlns="http://www.w3.org/1999/xhtml">符号化集合</var>で実行したものと解釈できますが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8パーセント符号化</anchor>の入力は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>であるのに対し、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の入力は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">16ビット符号単位</anchor>列なので<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サロゲート</anchor>の扱いが規定されている点が異なります。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="153" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[153]</anchor-end> <dfn><code class="JS" xml:lang="en">decodeURIComponent()</code></dfn> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="144" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;144</anchor-internal></src> は、それに対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>の方法です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>として、または <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="176" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[176]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>処理により <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> を組み立てる場合や、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の一部から符号化された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>を取り出す場合には、
これらの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">関数</anchor>が適切な場合が多いです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="177" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[177]</anchor-end> <code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code> でない普通の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>ですから、
<code>+</code> の特別な処理は行われません。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL query</anchor> の処理で特に
<code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code> を特に扱う必要がある時は、
処理前または処理後に適宜 <code>+</code> を置換しなければなりません。</p><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="149" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[149]</anchor-end> <cite>encodeURIComponent メソッド</cite> <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.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/js56jsmthEncodeURIComponent.asp">http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/script56/html/js56jsmthEncodeURIComponent.asp</anchor-external></p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="151" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[151]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 2 のいずれも、
<code class="URI" xml:lang="en">encodeURIComponent</code> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サロゲート・ペア</anchor>の片割れが与えられると正しく 
<code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URIError</anchor></code> を投げるようです。</p><refs><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="152" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[152]</anchor-end> <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://suika.fam.cx/~wakaba/-temp/test/js/uri/decode-uri-component/duc-1.html">http://suika.fam.cx/~wakaba/-temp/test/js/uri/decode-uri-component/duc-1.html</anchor-external></li></ul></refs><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="145" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[145]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 2 では、 <code class="URI" xml:lang="en">decodeURIComponent</code> に
<code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+FFFE</anchor></code> と <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+FFFF</anchor></code>
(に相当する <code class="URI">%EF%BF%BE</code> と <code class="URI">%EF%BF%BF</code>) 
を与えると、 <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+FFFD</anchor></code> を返します。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9 ではそのようなことはありません。</p><p xmlns="http://www.w3.org/1999/xhtml"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="146" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[146]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Opera</anchor> 9 は <code class="URI" xml:lang="en">%00</code> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>しないようです。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> 2 や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE 6</anchor> ではそのようなことはありません。</p></history></section><section><h1>JavaScript <code class="JS" xml:lang="en">escape()</code> / <code class="JS" xml:lang="en">unescape()</code></h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="48" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[48]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の <code class="JS" xml:lang="en">escape()</code> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>し、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非ASCII文字</anchor>は <code>%u</code> 符号化するものです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <code class="JS" xml:lang="en">unescape()</code> はそれを<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>するものです。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml">%u</code> 参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="178" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[178]</anchor-end> これらの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">関数</anchor>は歴史的なもので、必要となる場面はほとんどありません。</p></section><section><h1>ALPN プロトコル名のパーセント符号化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="138" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[138]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPNプロトコル名</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>する場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句</anchor>で表せる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オクテット</anchor> (<code>%</code> 以外) はそのまま、
それ以外は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>し、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>には<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>を使うことが求められています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en">ALPN:</code>、<code xmlns="http://www.w3.org/1999/xhtml" class="HTTP" xml:lang="en">Alt-Svc:</code> を参照。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="142" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[142]</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>された状態で比較に使うことが想定されています。</p></section><section><h1>CGI における取り扱い</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</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>する場合、 <code class="ABNF" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">reserved</anchor></code> に含まれていない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>しては<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><strong xmlns="http://www.w3.org/1999/xhtml">なりません</strong></anchor>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;39</anchor-internal></src>。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <cite xml:lang="en">RFC 3875 - The Common Gateway Interface (CGI) Version 1.1</cite> (<time>2011-11-20 06:09:05 +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://tools.ietf.org/html/rfc3875#section-2.3">http://tools.ietf.org/html/rfc3875#section-2.3</anchor-external></li></ul></refs></section><section><h1>URI Template のパーセント符号化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="57" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[57]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI Template</anchor> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">雛形リテラル</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>値の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">雛形式</anchor>参照。)
の2種類の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>の方法を規定しています。</p></section><section><h1>IRI および IRI もどきのパーセント符号化</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="58" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[58]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRI</anchor> および各種の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRI</anchor> もどきは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>により <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI</anchor>
を得る方法を規定しています。細部が異なる色々なバリエーションがあります。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRI</anchor> 参照。</comment-p></section><section><h1>パーセント符号化される文字/バイトの比較</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="141" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[141]</anchor-end> <figure class="table"><dl><dt>name</dt><dd>符号化の方式</dd><dt>encoded</dt><dd>符号化されるもの</dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8パーセント符号化</anchor> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">C0制御パーセント符号化集合</anchor></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set/%24url%3Asimple-encode-set">https://chars.suikawiki.org/set/%24url%3Asimple-encode-set</anchor-external></dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8パーセント符号化</anchor> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パスパーセント符号化集合</anchor></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set/%24url%3Adefault-encode-set">https://chars.suikawiki.org/set/%24url%3Adefault-encode-set</anchor-external></dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8パーセント符号化</anchor> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片パーセント符号化集合</anchor></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set/%24url%3Afragment-encode-set">https://chars.suikawiki.org/set/%24url%3Afragment-encode-set</anchor-external></dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8パーセント符号化</anchor> + <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">userinfoパーセント符号化集合</anchor></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set/%24url%3Auserinfo-encode-set">https://chars.suikawiki.org/set/%24url%3Auserinfo-encode-set</anchor-external></dd></dl><dl><dt>name</dt><dd><code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set?expr=-%24url%3Aform%3Aunencoded-byte-char">https://chars.suikawiki.org/set?expr=-%24url%3Aform%3Aunencoded-byte-char</anchor-external></dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ALPN</anchor></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set?expr=-%24rfc7230%3Atchar|[%25]">https://chars.suikawiki.org/set?expr=-%24rfc7230%3Atchar|[%25]</anchor-external></dd></dl><dl><dt>name</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OAuth 1.0</anchor></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set?expr=-%24rfc3986%3Aunreserved">https://chars.suikawiki.org/set?expr=-%24rfc3986%3Aunreserved</anchor-external></dd></dl><dl><dt>name</dt><dd><code class="JS" xml:lang="en">escape()</code></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set?expr=-%24ecma262%3Aescape-not-escaped">https://chars.suikawiki.org/set?expr=-%24ecma262%3Aescape-not-escaped</anchor-external></dd></dl><dl><dt>name</dt><dd><code class="JS" xml:lang="en">encodeURI()</code></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set?expr=-%24ecma262%3AunescapedURISet">https://chars.suikawiki.org/set?expr=-%24ecma262%3AunescapedURISet</anchor-external></dd></dl><dl><dt>name</dt><dd><code class="JS" xml:lang="en">encodeURIComponent()</code></dd><dt>encoded</dt><dd><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://chars.suikawiki.org/set?expr=-%24ecma262%3AunescapedURIComponentSet">https://chars.suikawiki.org/set?expr=-%24ecma262%3AunescapedURIComponentSet</anchor-external></dd></dl></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="154" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[154]</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>の比較:</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><cite xml:lang="en">Compare character sets</cite> (<time>2016-06-07 17:13:21 +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://chars.suikawiki.org/set/compare?expr=$url:simple-encode-set&amp;expr=$url:default-encode-set&amp;expr=$url:userinfo-encode-set&amp;expr=-$url:form:unencoded-byte-char&amp;expr=-$rfc7230:tchar|[%]&amp;expr=-$rfc3986:unreserved&amp;expr=-$ecma262:escape-not-escaped&amp;expr=-%24ecma262%3AunescapedURISet&amp;expr=-%24ecma262%3AunescapedURIComponentSet">https://chars.suikawiki.org/set/compare?expr=$url:simple-encode-set&amp;expr=$url:default-encode-set&amp;expr=$url:userinfo-encode-set&amp;expr=-$url:form:unencoded-byte-char&amp;expr=-$rfc7230:tchar|[%]&amp;expr=-$rfc3986:unreserved&amp;expr=-$ecma262:escape-not-escaped&amp;expr=-%24ecma262%3AunescapedURISet&amp;expr=-%24ecma262%3AunescapedURIComponentSet</anchor-external></li></ul></refs></section><section><h1>各実装の符号化演算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="171" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[171]</anchor-end> 歴代の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>の規定があまり明確でなかったことや、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>が文脈によって色々な使われ方をしていることもあり、
各種<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プログラミング言語</anchor>や<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ライブラリー</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フレームワーク</anchor>等の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント復号</anchor>の演算も多種多様で混乱しており、
利用する時は正しい物を注意深く選択しなければなりません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="172" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[172]</anchor-end> 例えば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PHP</anchor> の <code>http_build_query</code> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="170" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;170</anchor-internal></src> は、
符号化の方式を指定するオプションを用意していますが、
<code>PHP_QUERY_RFC1738</code> は「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1738</anchor> + <code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code>」、
<code>PHP_QUERY_RFC3986</code> は「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor>」の方式と説明されています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> は古い <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor> の仕様書で、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1738</anchor> は更に何代か古い <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL</anchor>
の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>です。
前者が実はただの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>ではなく 
<code class="MIME" xml:lang="en">application/x-www-form-urlencoded</code> 方式だという重要な情報は定数名に現れず、
ドキュメントを読まないとわかりません。
また <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 1738</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 3986</anchor> とで <code class="ABNF" xml:lang="en">reserved</code>
の定義が異なるためにどの文字を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント符号化</anchor>するかが両方式では違っているということのようです。
しかし、これではいつどちらを使うべきなのかがさっぱりわかりません
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PHP</anchor> のドキュメントにも、もちろん両 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC</anchor> にも書かれていません)。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="186" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[186]</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>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>のいずれであるかにも、
注意が必要です。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="188" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[188]</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:">UTF-8パーセント符号化</anchor>と、
その逆演算 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">パーセント復号</anchor>してから<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8復号</anchor>) の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">関数</anchor>が用意されていることがあります。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaScript</anchor> の <code xmlns="http://www.w3.org/1999/xhtml">encodeURIComponent</code>/<code xmlns="http://www.w3.org/1999/xhtml">decodeURIComponent</code>
に相当するものですが、やはり細部が異なることがあります。</comment-p><hr></hr><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="216" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[216]</anchor-end> 
<code>encodeURIComponent</code> を使っていればだいたいうまくいきますが、それでも困ることは稀にあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="217" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[217]</anchor-end> 
例えば <code>encodeURIComponent</code> は <sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(</sw-ch>, <sw-ch xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">)</sw-ch> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>しません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> の <code>url()</code> の中に直接使うと<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文誤り</anchor>になります。
<code>url(&quot;&quot;)</code>
の中でなら問題ありません。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="218" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[218]</anchor-end> どちらかといえば <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> の <code xmlns="http://www.w3.org/1999/xhtml">url()</code> の構文の方の欠陥に近いのですが、
<code xmlns="http://www.w3.org/1999/xhtml">url(&quot;&quot;)</code> より <code xmlns="http://www.w3.org/1999/xhtml">url()</code> の方が使いやすくて多用してしまうので、
うっかりには注意です。</comment-p></section></section><section><h1>歴史</h1><section><h1>RFC 2396 (URI) 2.4. Escape Sequences</h1><blockquote><p>Data must be escaped if it does not have a representation using an
unreserved character; this includes data that does not correspond to
a printable character of the US-ASCII coded character set, or that
corresponds to any US-ASCII character that is disallowed, as explained below.</p></blockquote><p>データは、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非予約</anchor>文字を使って表現することができない場合には、
escape しなければなりません。これには、
US‐ASCII 符号化文字集合の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">印字可能文字</anchor>に対応しないデータや対応する
US‐ASCII 文字が禁止されているデータを含みます。</p><section><h1>2.4.1. Escaped Encoding</h1><blockquote><p>An escaped octet is encoded as a character triplet, consisting of the
percent character &quot;%&quot; followed by the two hexadecimal digits
representing the octet code. For example, &quot;%20&quot; is the escaped
encoding for the US-ASCII space character.</p></blockquote><p>Escape するオクテットは、百分率記号
<code class="char">%</code> とそれに続くオクテット符号を表現する2つの16進数字で構成される3文字列として符号化されます。
例えば、 <code class="URI">%29</code> は US‐ASCII
間隔文字の escape した符号化です。</p><blockquote><ul><li><code class="ABNF"><dfn>escaped</dfn> = &quot;%&quot; hex hex</code></li><li><code class="ABNF"><dfn>hex</dfn> = digit | &quot;A&quot; | &quot;B&quot; | &quot;C&quot; | &quot;D&quot; | &quot;E&quot; | &quot;F&quot; | &quot;a&quot; | &quot;b&quot; | &quot;c&quot; | &quot;d&quot; | &quot;e&quot; | &quot;f&quot;</code></li></ul></blockquote></section><section><h1>2.4.2. When to Escape and Unescape</h1><blockquote><p>A URI is always in an &quot;escaped&quot; form, since escaping or unescaping a completed URI might change its semantics.  Normally, the only time escape encodings can safely be made is when the URI is being created from its component parts; each component may have its own set of characters that are reserved, so only the mechanism responsible for generating or interpreting that component can determine whether or not escaping a character will change its semantics. Likewise, a URI must be separated into its components before the escaped characters within those components can be safely decoded.</p></blockquote><p>URI は、常に「escape された」形です。
完全な URI を escape したり unescape したりすると、
その意味が変わってしまうかもしれません。
通常、 escape 符号化を安全に行うことができる唯一の機会は、
URI をその部品部分から作成するときです。
各部品は自身の予約されている文字の集合を持っているかもしれませんから、その部品を生成したり解釈したりするのに責を有する機構だけが文字を escape することでその意味が変わるかどうかを決定できます。
同様に、部品中の escape された文字を安全に復号する前には URI を部品群に分離しなければなりません。</p><blockquote><p>In some cases, data that could be represented by an unreserved
character may appear escaped; for example, some of the unreserved
&quot;mark&quot; characters are automatically escaped by some systems.  If the
given URI scheme defines a canonicalization algorithm, then
unreserved characters may be unescaped according to that algorithm.
For example, &quot;%7e&quot; is sometimes used instead of &quot;~&quot; in an http URL
path, but the two are equivalent for an http URL.</p></blockquote><p>場合によっては、非予約文字で表現できるデータが escape
されて現れることがあります。例えば、幾つかの非予約「マーク」文字を自動的に escape するシステムがあります。
その URI scheme が正規化算法を定義しているのなら、
非予約文字はその算法に従って escape を解いて構いません。
例えば、 <code class="URI">%7e</code> は <code class="URI"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">http</anchor></code> URL
経路で時々 <code class="URI">~</code> の代わりに使われますが、
<code class="URI">http</code> URL では2つは同等です。</p><blockquote><p>Because the percent &quot;%&quot; character always has the reserved purpose of being the escape indicator, it must be escaped as &quot;%25&quot; in order to be used as data within a URI.  Implementers should be careful not to
escape or unescape the same string more than once, since unescaping
an already unescaped string might lead to misinterpreting a percent
data character as another escaped character, or vice versa in the
case of escaping an already escaped string.</p></blockquote><p>百分率 <code class="URI">%</code> 文字は escape 指示子として使う目的で常に予約されているので、 URL 中でデータとして使うためには <code class="URI">%25</code> と escape しなければなりません。
実装者は、同じ文字列を複数回 escape したり解いたりしないように注意を払うべきです。
既に escape を解いた文字列を更に escape 解除すると百分率データ文字を他の escape された文字列を誤解したり、逆に既に escape された文字列を escape してしまったりします。</p></section></section><section><h1>RFC 1738 (URL) 2.2 の一部</h1><blockquote><dl><dt>No corresponding graphic US-ASCII</dt><dd>
URLs are written only with the graphic printable characters of the
US-ASCII coded character set. The octets 80-FF hexadecimal are not
used in US-ASCII, and the octets 00-1F and 7F hexadecimal represent
control characters; these must be encoded.</dd></dl></blockquote><dl><dt>対応する図形が US‐ASCII にない</dt><dd>URL は US‐ASCII
符号化文字集合の図形印字可能文字のみによって書きます。
オクテット <code>80</code>‐<code>FF</code> (16進)
は US‐ASCII では使っておらず、
オクテット <code>00</code>‐<code>7F</code> (16進)
は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">制御文字</anchor>を表現します。
これらは符号化しなければなりません。</dd></dl></section><section><h1>RFC 2396 (URI) 2.4.3. Excluded US-ASCII Characters</h1><blockquote><p>Although they are disallowed within the URI syntax, we include here a
description of those US-ASCII characters that have been excluded and
the reasons for their exclusion.</p></blockquote><p>これらの US‐ASCII 文字は URI 構文では禁止されていますが、
これらの US‐ASCII 文字が除外されていることとその除外の理由を説明するためにここに含めます。</p><blockquote><p>The control characters in the US-ASCII coded character set are not
used within a URI, both because they are non-printable and because
they are likely to be misinterpreted by some control mechanisms.</p></blockquote><p>US‐ASCII 符号化文字集合の制御文字は URI
中では使いません。これらは非印字可能ですし。
誤解する制御機構もあるでしょうからです。</p><blockquote><ul><li><code class="ABNF"><dfn>control</dfn> = &lt;US-ASCII coded characters 00-1F and 7F hexadecimal&gt;</code></li></ul></blockquote><blockquote><p>The space character is excluded because significant spaces may
disappear and insignificant spaces may be introduced when URI are
transcribed or typeset or subjected to the treatment of word-processing programs.  Whitespace is also used to delimit URI in many contexts.</p></blockquote><p>間隔文字は除外されていますが、これは、 URI 
が転記されたり植字されたり文書処理プログラムの処理対象になったりしたときに意味のある間隔が消滅したり、意味のない間隔が URI に加わったりするかもしれないからです。
空白は多くの場面で URI を区切るためにも使われます。</p><blockquote><ul><li><code class="ABNF"><dfn>space</dfn> = &lt;US-ASCII coded character 20 hexadecimal&gt;</code></li></ul></blockquote><blockquote><p>The angle-bracket &quot;&lt;&quot; and &quot;&gt;&quot; and double-quote (&quot;) characters are
excluded because they are often used as the delimiters around URI in
text documents and protocol fields.  The character &quot;#&quot; is excluded
because it is used to delimit a URI from a fragment identifier in URI
references (Section 4). The percent character &quot;%&quot; is excluded because
it is used for the encoding of escaped characters.</p></blockquote><p>角括弧 <code class="char">&lt;</code> 及び <code class="char">&gt;</code>
並びに二重引用符 <code class="char">&quot;</code> は、
文章やプロトコル欄の中においてしばしば URI
を囲む区切子として使われるので除外します。
文字 <code class="char">#</code> は URI と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">素片識別子</anchor>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URI参照</anchor>中で区切るのに使うので除外します。
百分率文字 <code class="char">%</code> は escape 文字の符号化に使うので除外します。 </p><blockquote><ul><li><code class="ABNF"><dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">delims</anchor></dfn> = &quot;&lt;&quot; | &quot;&gt;&quot; | &quot;#&quot; | &quot;%&quot; | &lt;&quot;&gt;</code></li></ul></blockquote><blockquote><p>Other characters are excluded because gateways and other transport
agents are known to sometimes modify such characters, or they are
used as delimiters.</p></blockquote><p>他の文字は、関門や他の転送エージェントが時々これらの文字を修正したり区切子に使ったりすることが知られているので除外します。</p><blockquote><ul><li><code class="ABNF"><dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">unwise</anchor> = &quot;{&quot; | &quot;}&quot; | &quot;|&quot; | &quot;\&quot; | &quot;^&quot; | &quot;[&quot; | &quot;]&quot; | &quot;`&quot;</dfn></code></li></ul></blockquote><blockquote><p>Data corresponding to excluded characters must be escaped in order to
be properly represented within a URI.</p></blockquote><p>除外文字に対応するデータは、 URI 中で適切に表現するためには
escape しなければなりません。</p></section></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BNF</anchor> では <code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">escape</anchor></code> とか <code class="ABNF"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">escaped</anchor></code> とかと表しています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="82" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[82]</anchor-end> なんにせよ、 URI 符号化は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">シフトJIS</anchor> とか <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-8</anchor> のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字符号化</anchor>とは層が異なることには注意しておいて損はないです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> まあ、 URI 符号化も「文字」符号化には違いないけど... 言葉遊びは勘弁して。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="84" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[84]</anchor-end> URI エスケープ符号化は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SGML</anchor>/<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">XML</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字参照</anchor>と同じ層に位置すると考えればいいかなぁ。<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(細かいことをいうと SGML はあくまで文書文字集合中の文字を参照するのに対し、 URI エスケープ符号はオクテットを符号化したものに過ぎないのは重大な差異だけど、この際どうでもいいか。)</weak></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20091229</cite>
(<time>2010-01-06 07:47:25 +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://krijnhoetmer.nl/irc-logs/whatwg/20091229">http://krijnhoetmer.nl/irc-logs/whatwg/20091229</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <cite xml:lang="en">XSLT 2.0 and XQuery 1.0 Serialization (Second Edition)</cite>
( (<time>2010-12-17 00:08:20 +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.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#uri-escaping">http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#uri-escaping</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <cite xml:lang="en">XSLT 2.0 and XQuery 1.0 Serialization (Second Edition)</cite>
( (<time>2010-12-17 00:08:20 +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.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#XHTML_ESCAPE-URI-ATTRIBUTES">http://www.w3.org/TR/2010/REC-xslt-xquery-serialization-20101214/#XHTML_ESCAPE-URI-ATTRIBUTES</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r1835   Don't escape '%' when doing URL resolution. (bug 5802) (credit: hs)</cite>
( (<time>2008-07-01 08:52:00 +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=1834&amp;to=1835">http://html5.org/tools/web-apps-tracker?from=1834&amp;to=1835</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <cite xml:lang="EN">XQuery 1.0 and XPath 2.0 Functions and Operators (Second Edition)</cite>
( (<time>2010-12-17 00:06:54 +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.w3.org/TR/2010/REC-xpath-functions-20101214/#func-encode-for-uri">http://www.w3.org/TR/2010/REC-xpath-functions-20101214/#func-encode-for-uri</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <cite xml:lang="en">Bug 24257 – &quot;Percent-decoding + full-width characters + percent decoding&quot; for domains is missing</cite>
( (<time>2014-01-15 09:00:30 +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://www.w3.org/Bugs/Public/show_bug.cgi?id=24257">https://www.w3.org/Bugs/Public/show_bug.cgi?id=24257</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <cite xml:lang="en">309671 – Support %-escaped hostnames per RFC 3986 (3.2.2) / Cannot open IDN from other applications(e.g., from Thunderbird)</cite>
( (<time>2014-01-15 09:02:05 +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://bugzilla.mozilla.org/show_bug.cgi?id=309671">https://bugzilla.mozilla.org/show_bug.cgi?id=309671</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="93" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[93]</anchor-end> <cite xml:lang="en">XSLT and XQuery Serialization 3.0</cite>
( (<time>2014-04-07 23:19: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.w3.org/TR/xslt-xquery-serialization-30/#uri-escaping">http://www.w3.org/TR/xslt-xquery-serialization-30/#uri-escaping</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> <cite xml:lang="en">XSLT and XQuery Serialization 3.0</cite>
( (<time>2014-04-07 23:19: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.w3.org/TR/xslt-xquery-serialization-3/#uri-escaping">http://www.w3.org/TR/xslt-xquery-serialization-3/#uri-escaping</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="102" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[102]</anchor-end> <cite xml:lang="en">draft-montenegro-httpbis-uri-encoding-00 - Deterministic URI Encoding</cite>
( (<time>2014-10-19 06:34:47 +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/draft-montenegro-httpbis-uri-encoding-00">https://tools.ietf.org/html/draft-montenegro-httpbis-uri-encoding-00</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="68" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[68]</anchor-end> <cite xml:lang="en">Encode { and } in username/password/path to fix #16. Also acknowledge… · whatwg/url@c296e2f</cite>
(<time>2015-06-11 12:55:46 +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/c296e2f8519a1d6614d664708d368a342682c9a1">https://github.com/whatwg/url/commit/c296e2f8519a1d6614d664708d368a342682c9a1</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="69" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[69]</anchor-end> <cite xml:lang="en">Do not encode ` in query. Fixes #17. · whatwg/url@f54c44d</cite>
(<time>2015-06-11 12:55:59 +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/f54c44d1f790dd2b8913e955ba6d334c6f14a048">https://github.com/whatwg/url/commit/f54c44d1f790dd2b8913e955ba6d334c6f14a048</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="70" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[70]</anchor-end> <cite xml:lang="en">RFC 2718 - Guidelines for new URL Schemes</cite>
(<time>2015-05-17 15:15: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://tools.ietf.org/html/rfc2718#section-2.2.5">https://tools.ietf.org/html/rfc2718#section-2.2.5</anchor-external></figcaption><blockquote><p>Unless there is some compelling reason for a
particular scheme to do otherwise, translating character sequences
into UTF-8 (RFC 2279) <strong>[</strong>3<strong>]</strong> and then subsequently using the %HH
encoding for unsafe octets is recommended.</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[72]</anchor-end> <cite xml:lang="en">Add a section on rendering URLs with some advice around bidirectional… · whatwg/url@d1152b9</cite>
(<time>2015-08-27 11:53: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/url/commit/d1152b94a16ae91e1f72d128fd5ef589635f0e7c">https://github.com/whatwg/url/commit/d1152b94a16ae91e1f72d128fd5ef589635f0e7c</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="105" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[105]</anchor-end> <cite xml:lang="en">Fix #77: always decode &quot;%2e&quot; in a URL's path · whatwg/url@bee5ad8</cite>
(<time>2016-01-15 18:56:05 +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/bee5ad8041adfe6fc676c527bbc3f3cf4562ef67">https://github.com/whatwg/url/commit/bee5ad8041adfe6fc676c527bbc3f3cf4562ef67</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="106" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[106]</anchor-end> <cite xml:lang="en">Drop dependencies on Encoding Standard's decoder concept · whatwg/url@37f9329</cite>
(<time>2016-02-11 12:00:52 +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/37f932928378c0df521034cfd223f4ba603ef476">https://github.com/whatwg/url/commit/37f932928378c0df521034cfd223f4ba603ef476</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="107" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[107]</anchor-end> <cite xml:lang="en">Use the &quot;get an output encoding&quot; from the Encoding Standard · whatwg/url@a9197f7</cite>
(<time>2016-02-11 12:03:28 +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/a9197f7714e6b125f1f760ca1aa661530261773c">https://github.com/whatwg/url/commit/a9197f7714e6b125f1f760ca1aa661530261773c</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="139" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[139]</anchor-end> <cite xml:lang="en">Bug 157153 – Accessing form.action as property URI-encodes spaces but not curly braces</cite>
( (<time>2016-05-27 10:28:24 +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://bugs.webkit.org/show_bug.cgi?id=157153">https://bugs.webkit.org/show_bug.cgi?id=157153</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="157" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[157]</anchor-end> <cite>技術/HTTP/URLエンコードで 0x20(スペース) を &quot;+&quot; にすべきか &quot;%20&quot; にすべきか - Glamenv-Septzen.net</cite>
(<time>2016-06-24 20:24:28 +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.glamenv-septzen.net/view/1170">http://www.glamenv-septzen.net/view/1170</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="170" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[170]</anchor-end> <cite xml:lang="en">PHP: http_build_query - Manual</cite>
(<time>2016-06-24 13:08:18 +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://php.net/manual/en/function.http-build-query.php">http://php.net/manual/en/function.http-build-query.php</anchor-external></figcaption><blockquote><p>enc_type</p><p>By default, PHP_QUERY_RFC1738.</p><p>If enc_type is PHP_QUERY_RFC1738, then encoding is performed per » RFC 1738 and the application/x-www-form-urlencoded media type, which implies that spaces are encoded as plus (+) signs.</p><p>If enc_type is PHP_QUERY_RFC3986, then encoding is performed according to » RFC 3986, and spaces will be percent encoded (%20).</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="179" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[179]</anchor-end> <cite xml:lang="en">Percent encode fragments too</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2016-12-10 02:43:08 +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/373dbedbbf0596f723ce8a195923da98b698aeb0">https://github.com/whatwg/url/commit/373dbedbbf0596f723ce8a195923da98b698aeb0</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="180" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[180]</anchor-end> <cite xml:lang="en">Stop decoding all %2e's in paths</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2016-10-28 20:46:47 +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/fbff6834a8a03576261f777d0e0afea5c1bc5a09">https://github.com/whatwg/url/commit/fbff6834a8a03576261f777d0e0afea5c1bc5a09</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="181" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[181]</anchor-end> <cite xml:lang="en">Percent-decode more stuff? · Issue #87 · whatwg/url</cite>
(<time>2017-01-05 20:17: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/issues/87">https://github.com/whatwg/url/issues/87</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="189" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[189]</anchor-end> <cite xml:lang="EN">XPath and XQuery Functions and Operators 3.1</cite>
(<time>2017-03-21 16:02:06 +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://www.w3.org/TR/2017/REC-xpath-functions-31-20170321/#func-encode-for-uri">https://www.w3.org/TR/2017/REC-xpath-functions-31-20170321/#func-encode-for-uri</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="190" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[190]</anchor-end> <cite xml:lang="en">XSLT and XQuery Serialization 3.1</cite>
(<time>2017-03-20 12:35:18 +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://www.w3.org/TR/2017/REC-xslt-xquery-serialization-31-20170321/#uri-escaping">https://www.w3.org/TR/2017/REC-xslt-xquery-serialization-31-20170321/#uri-escaping</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="191" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[191]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r6112 clarify how to generate ifragment thingies</cite>
( (<time>2011-05-07 07:34:00 +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=6111&amp;to=6112">http://html5.org/tools/web-apps-tracker?from=6111&amp;to=6112</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="192" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[192]</anchor-end> <cite xml:lang="en">Define percent decoding of strings</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2017-10-10 21:45:20 +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/e172261b0946036b485322976f93f50707159ce3">https://github.com/whatwg/url/commit/e172261b0946036b485322976f93f50707159ce3</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="197" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[197]</anchor-end> <cite xml:lang="en">data URLs: revised specification · Issue #234 · whatwg/fetch</cite>
(<time>2017-10-11 23:05:39 +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/issues/234">https://github.com/whatwg/fetch/issues/234</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="198" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[198]</anchor-end> <cite xml:lang="en">Define percent decoding of strings by annevk · Pull Request #340 · whatwg/url</cite>
(<time>2017-10-11 23:09:57 +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/340">https://github.com/whatwg/url/pull/340</anchor-external></p><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="200" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[200]</anchor-end> <cite xml:lang="ja">IE11 の互換性の変更点 (Windows)</cite>
(<time>2017-11-03 23:42:47 +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://msdn.microsoft.com/library/bg182625(v=vs.85).aspx">https://msdn.microsoft.com/library/bg182625(v=vs.85).aspx</anchor-external></figcaption><blockquote><p>Internet Explorer 11 では、URL の文字エンコードが変更されています。 具体的には、クエリ文字列と XHR 要求に UTF-8 文字エンコードが使われます。</p><p>この変更は、以下を除き、すべての URL に影響します。</p><p>アンカー名コンポーネント (フラグメントとも呼ばれます)。</p><p>ユーザー名コンポーネントとパスワード コンポーネント。</p><p>file:// または ftp:// プロトコル リンク。</p></blockquote></figure><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="202" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[202]</anchor-end> <cite xml:lang="en">Do not use percent decode on strings</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2017-10-10 21:54: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/commit/ce8404fa5d8c2c91725c5262fd69d0d45c227ec8">https://github.com/whatwg/html/commit/ce8404fa5d8c2c91725c5262fd69d0d45c227ec8</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="203" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[203]</anchor-end> <cite xml:lang="en">Do not use percent decode on strings by annevk · Pull Request #3111 · whatwg/html</cite>
(<time>2018-05-25 01:08:42 +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/3111">https://github.com/whatwg/html/pull/3111</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="204" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[204]</anchor-end> <cite xml:lang="en">Change query state slightly to better deal with non-UTF-8 encodings</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2018-05-09 17:55: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/url/commit/f0e4390bf882446445e944215524ff3877aac95a">https://github.com/whatwg/url/commit/f0e4390bf882446445e944215524ff3877aac95a</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="205" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[205]</anchor-end> <cite xml:lang="en">&quot;html&quot; error mode somewhat incompatible with URLs · Issue #139 · whatwg/encoding</cite>
(<time>2018-05-26 00:01:16 +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/issues/139">https://github.com/whatwg/encoding/issues/139</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="206" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[206]</anchor-end> <cite xml:lang="en">Change query state slightly to better deal with non-UTF-8 encodings by annevk · Pull Request #386 · whatwg/url</cite>
(<time>2018-05-26 00:01:58 +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/386">https://github.com/whatwg/url/pull/386</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="207" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[207]</anchor-end> <cite xml:lang="en">795733 - '&amp;' and ';' should not be percent-encoded in URL queries - chromium - Monorail</cite>
(<time>2018-05-26 00:03: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://bugs.chromium.org/p/chromium/issues/detail?id=795733">https://bugs.chromium.org/p/chromium/issues/detail?id=795733</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="208" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[208]</anchor-end> <cite xml:lang="en">Percent-encode ' in queries of URLs with special schemes</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">achristensen07</anchor>著, <time>2018-06-08 16:46: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/commit/6ef17ebe1220a7e7c0cfff0785017502ee18808b">https://github.com/whatwg/url/commit/6ef17ebe1220a7e7c0cfff0785017502ee18808b</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="209" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[209]</anchor-end> <cite xml:lang="en">percent-encode ' in queries of URLs with special schemes · Issue #348 · whatwg/url</cite>
(<time>2018-06-11 23:47:01 +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/issues/348">https://github.com/whatwg/url/issues/348</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="210" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[210]</anchor-end> <cite xml:lang="en">percent-encode ' in queries of URLs with special schemes by achristensen07 · Pull Request #395 · whatwg/url</cite>
(<time>2018-06-11 23:48:59 +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/395">https://github.com/whatwg/url/pull/395</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="211" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[211]</anchor-end> <cite xml:lang="en">Change query state slightly to better deal with non-UTF-8 encodings</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2018-05-09 17:55: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/url/commit/f0e4390bf882446445e944215524ff3877aac95a">https://github.com/whatwg/url/commit/f0e4390bf882446445e944215524ff3877aac95a</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="212" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[212]</anchor-end> <cite xml:lang="en">Do not use percent decode on strings</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2017-10-10 21:54: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/commit/ce8404fa5d8c2c91725c5262fd69d0d45c227ec8">https://github.com/whatwg/html/commit/ce8404fa5d8c2c91725c5262fd69d0d45c227ec8</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="213" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[213]</anchor-end> <cite xml:lang="en">Do not use percent decode on strings by annevk · Pull Request #3111 · whatwg/html</cite>
(<time>2019-02-25 17:54:42 +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/3111">https://github.com/whatwg/html/pull/3111</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="214" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[214]</anchor-end> <cite xml:lang="ja-JP">module URI (Ruby 2.6.0)</cite>
(<time>2019-03-17 18:15:56 +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://docs.ruby-lang.org/ja/latest/class/URI.html">https://docs.ruby-lang.org/ja/latest/class/URI.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="215" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[215]</anchor-end> 
<cite xml:lang="ja">URLに含まれるとGoogle Chromeがクラッシュする文字列 | スラド IT</cite>, <time>2024-01-22T13:54:58.000Z</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://it.srad.jp/story/15/09/19/2352204/">https://it.srad.jp/story/15/09/19/2352204/</anchor-external></p></section></body></html>