<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="62" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[62]</anchor-end> <strong>ToUnicode</strong> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</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:">Punycode</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><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="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <cite xml:lang="en-us">UTS #46: Unicode IDNA Compatibility Processing</cite> (<time>2010-10-30 01:01:25 +09:00</time> 版)<ul><li><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-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.unicode.org/reports/tr46/#Compatibility_Processing">http://www.unicode.org/reports/tr46/#Compatibility_Processing</anchor-external></li><li><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> <strong><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.unicode.org/reports/tr46/#Processing">http://www.unicode.org/reports/tr46/#Processing</anchor-external></strong></li><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> <cite xml:lang="en-us">UTS #46: Unicode IDNA Compatibility Processing</cite> (<time>2010-10-30 01:01: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://unicode.org/reports/tr46/#ToASCII">http://unicode.org/reports/tr46/#ToASCII</anchor-external></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> <strong><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.unicode.org/reports/tr46/#ToUnicode">http://www.unicode.org/reports/tr46/#ToUnicode</anchor-external></strong></li><li><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> <strong><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.unicode.org/reports/tr46/#IDNA2008_Preprocessing">http://www.unicode.org/reports/tr46/#IDNA2008_Preprocessing</anchor-external></strong></li></ul></li><li><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> <cite xml:lang="en">URL Standard</cite> (<time>2016-08-25 16:02: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="https://url.spec.whatwg.org/#concept-domain-to-unicode">https://url.spec.whatwg.org/#concept-domain-to-unicode</anchor-external></li><li><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> <cite xml:lang="en">URL Standard</cite> (<time>2016-08-25 16:02: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="https://url.spec.whatwg.org/#dom-url-domaintounicode">https://url.spec.whatwg.org/#dom-url-domaintounicode</anchor-external></li></ul></refs></section><section><h1>ドメインをUnicodeに</h1><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> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメインをUnicodeに<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">domain to Unicode</rt></rubyb></dfn>する<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>を、次のようにします <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="76" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;76</anchor-internal></src>。</p><figure class="steps"><ol><li><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> (<var>結果</var>、<var>誤り</var>) を、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor> の結果に設定します。<figure class="list members middle"><dl><dt><var>ドメイン名</var></dt><dd><var>ドメイン</var></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckHyphens</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckBidi</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckJoiners</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">移行的処理</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd></dl></figure></li><li><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> <var>誤り</var>が<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="80" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[80]</anchor-end> <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="81" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[81]</anchor-end> <var>結果</var>を返します。</li></ol></figure><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> この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor>は、次の場面で呼び出されます。</p><figure class="middle list"><figcaption><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメインをUnicodeに</anchor>する場面</figcaption><ul><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>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表示</anchor></li></ul><history xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源のUnicode直列化</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト構文解析器</anchor> (<var>Unicodeフラグ</var>設定時)</li></ul></history></figure></section><section><h1>UTS #46 の ToUnicode 演算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> の <dfn>ToUnicode</dfn> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</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="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;17</anchor-internal></src>。<figure class="list members middle"><dl><dt><var>ドメイン名</var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode文字列</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckHyphens</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckBidi</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckJoiners</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd></dl></figure></p><p><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> 次のようにします <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="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;17</anchor-internal></src>。<figure class="steps"><ol><li><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> (<var>ドメイン名</var>、<var>誤り</var>) を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode IDNA互換性処理</anchor>の結果に設定します。<figure class="list members middle"><dl><dt><var>ドメイン名</var></dt><dd><var>ドメイン名</var></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var></dt><dd><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckHyphens</anchor></var></dt><dd><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckHyphens</anchor></var></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckBidi</anchor></var></dt><dd><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckBidi</anchor></var></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckJoiners</anchor></var></dt><dd><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckJoiners</anchor></var></dd><dt><var>処理オプション</var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor></dd></dl></figure></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> (<var>ドメイン名</var>、<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="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:">UTS #46</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</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="73" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[73]</anchor-end> 利用される場面は、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;72</anchor-internal> を参照。</p><p><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> テストデータ:</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="75" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[75]</anchor-end> <cite>IdnaTest.txt</cite> (<time>2016-06-21 06:36: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.unicode.org/Public/idna/latest/IdnaTest.txt">http://www.unicode.org/Public/idna/latest/IdnaTest.txt</anchor-external></li></ul></refs></section><section><h1>Unicode IDNA互換性処理</h1><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> <dfn>Unicode IDNA<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換性処理<rt xmlns="http://www.w3.org/1999/xhtml">Compatibility Processing</rt></rubyb></dfn>は<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:">Punycode</anchor> を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">復号</anchor>します。これは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">操作</anchor>そのものであると共に、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008前処理</anchor>として <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</anchor> 本体での処理の前段階として用いたり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">操作</anchor>の最初の手順として用いたりします。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor>
に戻すために使うだけでなく、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode</anchor>) にしたいときもまずはできるだけ
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</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="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;44</anchor-internal></src>。<figure class="list members"><dl><dt><var>ドメイン名</var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode文字列</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckBidi</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd><dt><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckJoiners</anchor></var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd><dt><dfn><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckHyphens</anchor></var></dfn></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd><dt><var>処理オプション</var></dt><dd><dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>移行的処理</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Transitional Processing</rt></rubyb></dfn>または<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>非移行的処理</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Nontransitional Processing</rt></rubyb></dfn></dd><dt><var>Punycode符号化</var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor> (既定値は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor>)</dd><dt><var>VerifyDnsLength</var></dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor></dd></dl></figure></p><p><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:">移行的処理</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor>の違いは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</anchor>
で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Aラベル</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ACEラベル</anchor>) への変換結果が変わってしまう4文字の扱いだけ <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="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;25</anchor-internal></src> です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">移行的処理</anchor>はこの4文字を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</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="45" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[45]</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:">Unicode文字列</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</anchor>) の組です。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode文字列</anchor>は、変換結果です。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">boolean</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>があっても、出来る限りの変換結果の文字列が返されます。 <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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;44</anchor-internal></src></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> 次のようにします <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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;44</anchor-internal></src>。<figure class="steps"><ol><li><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> <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="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <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="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>写像</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">map</rt></rubyb>: <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="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:">IDNA写像表</anchor> (<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var>) における<var>符号</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態値</anchor>により、<figure class="switch"><dl><dt><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>禁止</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">disallowed</rt></rubyb></dt><dd><var>誤り</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>に設定します。</dd><dt><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>無視</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">ignored</rt></rubyb></dt><dd><var>符号</var>を、 <code>null</code> に設定します。</dd><dt><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>写像</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">mapped</rt></rubyb></dt><dd>
<var>符号</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA写像表</anchor> (<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var>) 
における<var>符号</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">写像値</anchor>に設定します。</dd><dt><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>偏差</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">deviation</rt></rubyb></dt><dd>
<var>処理オプション</var>が<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:">IDNA写像表</anchor> (<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var>) 
における<var>符号</var>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">写像値</anchor>に設定します。</dd></dl></figure></li><li><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> <var>符号</var>が <code>null</code> でなければ、<ol><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> <var>結果</var>の末尾に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor><var>符号</var>を追加します。</li></ol></li></ol></li><li><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> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>正規化</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">normalize</rt></rubyb>: 
<var>結果</var>を、 <var>結果</var>に <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor> を適用した結果に設定します。</li><li><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> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>切断</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">break</rt></rubyb>: 
<var>ラベル群</var>を、<var>結果</var>を <code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">U+002E</title></code> で分割した結果に設定します。</li><li><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> <rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>変換</anchor>・<anchor>妥当性検証</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">convert/validate</rt></rubyb>:
<var>ラベル群</var>の各項目<var>ラベル</var>について、順に、<ol><li><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> <var>ラベル</var>の先頭が <code>xn--</code> なら、<ol><li><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> <var>結果</var>を、<var>ラベル</var>から先頭4文字を除去したものに 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode復号</anchor>を適用した結果に設定します。</li><li><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> <var>結果</var>が<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="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <var>誤り</var>を、<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="51" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[51]</anchor-end> それ以外の場合、<ol><li><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> <var>ラベル群</var>における<var>ラベル</var>を、<var>結果</var>で置き換えます。
以後<var>ラベル</var>は<var>結果</var>とします。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <var>結果</var>を、
<var>ラベル</var>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor>、<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var>、
<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckHyphens</anchor></var>、
<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckBidi</anchor></var>、
<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckJoiners</anchor></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="52" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[52]</anchor-end> <var>結果</var>が<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="53" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[53]</anchor-end> <var>誤り</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>に設定します。</li></ol></li></ol></li></ol></li><li><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> それ以外の場合、<ol><li><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> <var>結果</var>を、
<var>ラベル</var>が<var>処理オプション</var>、<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var>、
<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckHyphens</anchor></var>、
<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckBidi</anchor></var>、
<var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckJoiners</anchor></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="54" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[54]</anchor-end> <var>結果</var>が<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="55" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[55]</anchor-end> <var>誤り</var>を、<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="96" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[96]</anchor-end> <var>Punycode符号化</var>が<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="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;95</anchor-internal></src>、<ol><li><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> <var>ラベル</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非ASCII文字</anchor>が含まれるなら、<ol><li><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> <var>符号化ラベル</var>を、 <code>xn--</code> の後に<var>ラベル</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode符号化</anchor>を適用した結果を連結したものに設定します。</li><li><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> <var>ラベル群</var>の<var>ラベル</var>を、<var>符号化ラベル</var>で置き換えます。
以後<var>ラベル</var>は<var>符号化ラベル</var>とします。</li></ol></li></ol></li><li><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> <var>VerifyDnsLength</var> が<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="101" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[101]</anchor-end> <var>ラベル</var>の長さが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">範囲</anchor> [ <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">63</n> ] に含まれなければ、<ol><li><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> <var>誤り</var>を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor>に設定します。</li></ol></li></ol></li></ol></li><li><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> <var>結果</var>を、<var>ラベル群</var>の各項目を <code>.<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">U+002E</title></code> で連結した結果に設定します。</li><li><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> <var>VerifyDnsLength</var> が<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="95" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;95</anchor-internal></src>、<ol><li><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> <var>結果</var>の長さ (末尾が <code>U+002E</code> の場合、それを無視した長さ)
が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">範囲</anchor> [ <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">1</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">253</n> ] に含まれなければ、<ol><li><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> <var>誤り</var>を、<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="56" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[56]</anchor-end> (<var>結果</var>、<var>誤り</var>) を返します。</li></ol></figure></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> <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>、そうでなければ<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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;44</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="106" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[106]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>では、 <var xmlns="http://www.w3.org/1999/xhtml">Punycode符号化</var>と <var xmlns="http://www.w3.org/1999/xhtml">VerifyDnsLength</var>
の処理は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode IDNA互換性処理</anchor>自体ではなく、それを呼び出す <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor>
演算の一部として定義されています。</comment-p><p><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> 実装は、<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>に設定される原因の部分を <code>U+FFFD</code>
に置き換えたりすることが<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">推奨<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">recommend</rt></rubyb>されます。 <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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;44</anchor-internal></src></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> この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">算法</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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;44</anchor-internal></src></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> 利用される場面は、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="72" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;72</anchor-internal> を参照。</p><hr></hr><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:">Chrome</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</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>xn--</code> から始まる場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Aラベル</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="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:">Chrome</anchor> でも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</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>をまったく含まないなら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当性基準</anchor>を検証しないようです。
<time>2016-08-28T03:03:52.300Z</time></p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</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:">Chrome</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>を含む時、
<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>も含め、行うようです。
<time>2016-08-28T03:15:33.000Z</time></p><p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偏差</anchor>となる <code>U+200C</code> と <code>U+200D</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:">Firefox</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:">ContextJ規則</anchor>の検査も行いません。 <time>2016-08-28T03:39:10.400Z</time></p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IE</anchor> は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">bidi規則</anchor>の検査は
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</anchor> 相当も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> 相当も) 行っていないらしいです。</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> も <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">bidi規則</anchor>の検査は行っていないようです。 <time>2016-08-28T03:24:19.700Z</time></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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> 相当の検査は行っていないようですが、
何らかの検査は行っているようにみえます。 <time>2016-08-28T06:18:45.100Z</time></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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は<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:">非ASCII文字</anchor>が含まれなければエラーにはしません。 <time>2016-08-28T14:43:18.500Z</time></p><p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> は<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>の長さの検査も行うようです。 <time>2016-09-01T08:24:39.500Z</time></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="94" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[94]</anchor-end> <code class="JS">new URL (&quot;http://\u0640a&quot;)</code> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Chrome</anchor> でエラーになります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Firefox</anchor> ではエラーになりません。 <time>2016-08-28T06:20:14.100Z</time></p></example><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="83" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[83]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> 時代は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">写像</anchor>などの処理は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Nameprep</anchor> によって規定されていました。
(ただし <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</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:">UTS #46</anchor> と同じでした。)</p><p xmlns="http://www.w3.org/1999/xhtml"><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Nameprep</anchor> では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFKC</anchor> を使っていましたが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NFC</anchor>
を使っています。<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換分解</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Nameprep</anchor> の他の処理と共に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">写像</anchor>に組み込まれています。</p></history><section><h1>移行的処理と非移行的処理の選択</h1><p><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:">DNS lookup</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>を使うべきです。
<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="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;25</anchor-internal> 2.1</src>
両者の違いは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偏差</anchor>に分類される4文字だけであり、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">lookup</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></section><section><h1>レジストリーにおける対応</h1><p><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>にあっては次のいずれかの対応を行うことが強く推奨されています
<RSC xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;25</anchor-internal> 2.2</RSC>。</p><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Bundling</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>が同じでなければならない</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Blocking</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>の4文字を認めない</li></ul></section><section><h1>例</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-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.unicode.org/reports/tr46/#Table_Example_Processing">http://www.unicode.org/reports/tr46/#Table_Example_Processing</anchor-external> にこの<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="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:">利用者</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="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:">妥当性検証</anchor>で失敗した<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラベル</anchor>を <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:">利用者</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="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;44</anchor-internal></src></p></section></section><section><h1>文脈</h1><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode IDNA互換性処理</anchor>とそれを使った <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor>
は、次の場面で呼び出されます。</p><figure class="table col"><dl><dt>x3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor></dd><dt>x2</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor></dd><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor></dd><dt>std3</dt><dd><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></var> </dd><dt>bidi</dt><dd><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckBidi</anchor></var></dd><dt>joiners</dt><dd><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckJoiners</anchor></var></dd><dt>hyphens</dt><dd><var><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CheckHyphens</anchor></var></dd><dt>pr</dt><dd><var>処理オプション</var></dd><dt>pu</dt><dd><var>Punycode符号化</var></dd><dt>l</dt><dd><var>VerifyDnsLength</var></dd></dl><dl><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor></dd><dt>std3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>bidi</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>joiners</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>hyphens</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>pr</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor></dd><dt>pu</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>l</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd></dl><dl><dt>x2</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008前処理</anchor></dd><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor></dd></dl><dl><dt>x2</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメインをUnicodeに</anchor></dd><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor></dd><dt>std3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>bidi</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>joiners</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>hyphens</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>pr</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor></dd><dt>pu</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>l</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd></dl><dl><dt>x2</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当なドメイン</anchor></dd><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor></dd><dt>std3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>bidi</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>joiners</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>hyphens</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>pr</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor></dd><dt>pu</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>l</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd></dl><hr></hr><dl><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor></dd><dt>std3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>bidi</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>joiners</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>hyphens</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>pr</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd><dt>pu</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>l</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">引数</anchor></dd></dl><dl><dt>x2</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメインをASCIIに</anchor></dd><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor></dd><dt>std3</dt><dd><var>厳密にする</var></dd><dt>bidi</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>joiners</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>hyphens</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>pr</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor></dd><dt>pu</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>l</dt><dd><var>厳密にする</var></dd></dl><dl><dt>x3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト構文解析器</anchor></dd><dt>x2</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメインをASCIIに</anchor></dd><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor></dd><dt>std3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>bidi</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>joiners</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>hyphens</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>pr</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor></dd><dt>pu</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>l</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd></dl><dl><dt>x3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">妥当なドメイン</anchor></dd><dt>x2</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメインをASCIIに</anchor></dd><dt>x1</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor></dd><dt>std3</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>bidi</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>joiners</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>hyphens</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">偽</anchor></dd><dt>pr</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非移行的処理</anchor></dd><dt>pu</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd><dt>l</dt><dd><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">真</anchor></dd></dl></figure></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> 逆の操作として、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor>があります。</p></section><section><h1>歴史</h1><section><h1>IDNA2003 の ToUnicode 演算</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor> の <dfn xml:lang="en"><code xml:lang="en">ToUnicode</code></dfn> <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:">ACEラベル</anchor>でない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">国際化ラベル</anchor>に変換します。
大まかに言うと <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode</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="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2003</anchor><ul><li><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> <cite xml:lang="en">RFC 3490 - Internationalizing Domain Names in Applications (IDNA)</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="https://tools.ietf.org/html/rfc3490#section-4.2">https://tools.ietf.org/html/rfc3490#section-4.2</anchor-external></li></ul></li></ul></refs><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> 入力:<figure class="list members"><ul><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">国際化ラベル</anchor>、すなわち <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>の列。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:" xml:lang="en">RFC 3490 4.2</src></li><li><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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">フラグ</anchor> <code xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AllowUnassigned</anchor></code>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:" xml:lang="en">RFC 3490 4.2</src></li><li><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:">フラグ</anchor> <code xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UseSTD3ASCIIRules</anchor></code>。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:" xml:lang="en">RFC 3490 4.2</src></li></ul></figure></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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor> を内部的に呼び出すので、 <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> が入力となっています。直接は使っていません。</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> 出力:<figure class="list members"><ul><li><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:">Unicode</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>の列。 <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:" xml:lang="en">RFC 3490 4.2</src><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">入力</anchor>が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ACE名札</anchor>なら、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">等価</anchor>で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ACE名札</anchor>では<em>ない</em><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="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>。</li></ul></li></ul></figure></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> <code xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor></code> は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">失敗</anchor>しません。
<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:">算法</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>とします。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:" xml:lang="en">RFC 3490 4.2</src></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><figure class="steps"><ol><li>すべての<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 class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+0000</anchor></code>〜<code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">U+007F</anchor></code>)
に収まっていれば、 3 に進みます。</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Nameprep</anchor> を適用します
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">旗</anchor> <code xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">AllowUnassigned</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>とします。</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ACE接頭辞</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:">ACE接頭辞</anchor>を削除します。</li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Punycode</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>とします。
結果の列の複製を作ります。</li><li><code xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor></code> を適用します。</li><li>6 の結果が 3 で作成した複製と<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:">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>によります。</li><li>5 で作成した複製を出力とします。</li></ol></figure></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> 確認して違っていたらどうするのでしょう。<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="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</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:">ToUnicode</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 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>が増えることはありません。
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:" xml:lang="en">RFC 3490 4.2</src></p><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:">IDNA2003</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor> は次の場面で使われます。<figure class="short list"><ul><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">dNSName</anchor></code></li><li><code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SRVName</anchor></code></li></ul></figure></p></section><section><h1>UTS #46</h1><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:">IDNA2003</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ラベル</anchor>に対して、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメイン名</anchor>に対して
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">操作</anchor>が定義されています。また、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> では
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToUnicode</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ToASCII</anchor> の共通の内部操作<strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode IDNA互換性処理</anchor></strong>も定義されています。</p></section><section><h1>IDNA2008 前処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTS #46</anchor> の<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>IDNA2008前処理</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Preprocessing for IDNA2008</rt></rubyb></dfn>は、
<weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">(完全な <anchor>Unicode IDNA互換性処理</anchor>を行うのとは違って)</weak>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</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>です。これは移行処理が特に必要がない場面で利用できます
<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="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;25</anchor-internal></src>。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008前処理</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:">ToUnicode</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">演算</anchor>
(<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal>) を適用することと定義されています <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="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;23</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="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008前処理</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:">IDNA2003</anchor>では行われていた処理の一部がなされるようになります。
これだけでは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDNA2008</anchor> で認められていない<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字</anchor>が一部素通しされてしまいますが、
「前」処理であるので問題にはなりません <src><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;23</anchor-internal></src>。</comment-p></section><section><h1>IDNA2008 問題</h1><figure class="quote"><figcaption><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <cite xml:lang="en">479520 – (IDNA2008) Implement IDNA2008 and Unicode UTS #46</cite>
(<time>2015-03-24 19:03: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://bugzilla.mozilla.org/show_bug.cgi?id=479520#c100">https://bugzilla.mozilla.org/show_bug.cgi?id=479520#c100</anchor-external></figcaption><blockquote><p>my understanding is that Microsoft and Google do not want to switch away from Transitional until at least some solution is found to the attacks mentioned in this bug.</p></blockquote></figure><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">Cleanup definitions of domainToASCII() and domainToUnicode(). Give up… · whatwg/url@d18639f</cite>
(<time>2015-08-18 12:14:04 +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/d18639f13cb710938f2251a8f0e40b637aa82823">https://github.com/whatwg/url/commit/d18639f13cb710938f2251a8f0e40b637aa82823</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">Add a section on rendering URLs with some advice around bidirectional… · whatwg/url@d1152b9</cite>
(<time>2015-08-27 11:53:32 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/url/commit/d1152b94a16ae91e1f72d128fd5ef589635f0e7c">https://github.com/whatwg/url/commit/d1152b94a16ae91e1f72d128fd5ef589635f0e7c</anchor-external></p></section><section><h1><code class="DOMi" xml:lang="en">URL</code> インターフェイス <code class="DOMm" xml:lang="en">domainToUnicode</code> 静的メソッド</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> <code class="DOMi" xml:lang="en">URL</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">インターフェイス</anchor>の 
<dfn><code class="DOMm" xml:lang="en">domainToUnicode</code></dfn> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">静的メソッド</anchor>は、
次のようにしなければ<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="110" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;110</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> <var>ドメイン</var>を、必須の第1引数を <code class="DOMi" xml:lang="en">USVString</code> として解釈した結果に設定します。</li><li><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> <var>Unicodeドメイン</var>を、<var>ドメイン</var>に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ホスト構文解析器</anchor>を
<var>Unicodeフラグ</var>付きで適用した結果に設定します。</li><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>Unicodeドメイン</var>が<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="115" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[115]</anchor-end> <var>Unicodeドメイン</var>を返します。</li></ol></li><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> それ以外なら、<ol><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">空文字列</anchor>を返します。</li></ol></li></ol></figure></p><p><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメインをUnicodeに</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:">IPアドレス</anchor>かどうかの判定、
不適切な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>の検査が追加で行われます。</p><p><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> <code class="DOMi" xml:lang="en">domainToASCII</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">静的メソッド</anchor>を実行してから<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ドメインをUnicodeに</anchor>を実行するのと等価です。</p><p><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> <cite xml:lang="en">Remove URL.domainToASCII and domainToUnicode</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2016-10-19 21:04:17 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/url/commit/2bd0f59b98024921ab90e628b7a526cca5abcb5f">https://github.com/whatwg/url/commit/2bd0f59b98024921ab90e628b7a526cca5abcb5f</anchor-external></p><p><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> <cite xml:lang="en">Use Nontransitional_Processing for IDNA ToASCII</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2017-02-20 18:51:49 +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/f4d84a52e67b154b2d11e04889fe0a35a029c833">https://github.com/whatwg/url/commit/f4d84a52e67b154b2d11e04889fe0a35a029c833</anchor-external></p><p><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> <cite xml:lang="en">IDNA: use proposed UTS46 flags to avoid breaking YouTube</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2017-06-02 06:24: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/commit/dc9d83106cada9af507bf37dee3973de97b020fd">https://github.com/whatwg/url/commit/dc9d83106cada9af507bf37dee3973de97b020fd</anchor-external></p><p><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> <cite xml:lang="en">IDNA / UTS #46 &quot;should&quot; requirements (Bidi and Joiners) · Issue #110 · whatwg/url</cite>
(<time>2017-09-03 21:20:31 +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/110">https://github.com/whatwg/url/issues/110</anchor-external></p><p><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> <cite xml:lang="en">IDNA: realign once UTS46 revision 18 is final · Issue #313 · whatwg/url</cite>
(<time>2017-09-03 21:23:48 +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/313">https://github.com/whatwg/url/issues/313</anchor-external></p><p><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> <cite xml:lang="en">Address several IDNA issues by annevk · Pull Request #309 · whatwg/url</cite>
(<time>2017-09-03 21:24: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="https://github.com/whatwg/url/pull/309">https://github.com/whatwg/url/pull/309</anchor-external></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> <cite xml:lang="en">IDNA · Issue #53 · whatwg/url</cite>
(<time>2017-09-03 21:27:04 +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/53">https://github.com/whatwg/url/issues/53</anchor-external></p><p><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> <cite xml:lang="en">IDNA: UTS46 revision 19 is part of Unicode 10</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">annevk</anchor>著, <time>2017-06-23 02:33:33 +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/b128ba9111c68ad767b472d77d0ada9ef85366ef">https://github.com/whatwg/url/commit/b128ba9111c68ad767b472d77d0ada9ef85366ef</anchor-external></p><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> <cite xml:lang="en">IDNA: UTS46 revision 19 is part of Unicode 10 by annevk · Pull Request #325 · whatwg/url</cite>
(<time>2017-09-03 21:31: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="https://github.com/whatwg/url/pull/325">https://github.com/whatwg/url/pull/325</anchor-external></p><p><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> <cite xml:lang="en">Continue to use Nontransitional processing for IDNA</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TRowbotham</anchor>著, <time>2018-07-23 21:38: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="https://github.com/whatwg/url/commit/6800342832fdf99caa265d0106cf984123716d9d">https://github.com/whatwg/url/commit/6800342832fdf99caa265d0106cf984123716d9d</anchor-external></p><p><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> <cite xml:lang="en">Preserve use of Nontransitional processing for IDNA by TRowbotham · Pull Request #404 · whatwg/url</cite>
(<time>2018-07-26 22:30:48 +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/404">https://github.com/whatwg/url/pull/404</anchor-external></p><p><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> <cite xml:lang="en">Restructure URL rendering section and add additional guidance</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">estark37</anchor>著, <time>2019-04-04 23:49: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/8809598ddfd1d935432c8a0cad53f13d70e24bc6">https://github.com/whatwg/url/commit/8809598ddfd1d935432c8a0cad53f13d70e24bc6</anchor-external></p></section></section></body></html>