<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="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:">Unicode符号位置</anchor>を <dfn><code>\u<var>HHHH</var></code></dfn>
のように<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エスケープ</anchor>する方法が色々な場面で使われます。</p><section><h1>BMP 符号位置の符号化</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> <code class="char">U+0000</code>-<code class="char">U+FFFF</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>は、
<code>\u</code> の後に4桁の<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>を表すことによって表現できます。</p><p><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:">十六進数字</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="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:">エスケープ</anchor>形で表し、何を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エスケープ</anchor>しないで表すかは、
使われる文脈によります。</p></section><section><h1>非 BMP 符号位置の符号化</h1><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> <code class="char">U+10000</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="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> 古くから使われている方法では、 <code>\U</code> の後に8桁の<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:">UCS</anchor> の31ビットすべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>を表現できます。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BMP<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">UCS BMP</title></anchor> をこの方法でも表現できるかどうかは、文脈によります。)</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> 場合によっては、 <code>\U</code> の後に6桁の<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:">Unicode</anchor> の21ビットすべての<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号位置</anchor>を表現できます。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BMP<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">UCS BMP</title></anchor> をこの方法でも表現できるかどうかは、文脈によります。)</p><p><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> この2つの方法は、混在させることができません。</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:">UTF-16</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>の
<code>\u<var>HHHH</var></code> 形で非 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BMP<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">UCS BMP</title></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="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> エラー処理の方法は、文脈によります。困ったことに、明確に規定していない場合もあります。</p><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> 少なくても次のようなエラー状況を想定する必要があります。<figure class="list"><ul><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> <code>\u<var>HHHH</var></code> など適切な形式にならずに途切れている <code>\</code>
などが出現した場合の扱い</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> <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:">Unicode</anchor> の範囲外の <code>\U12345678</code> 
のようなものなど)</li><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> <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>が現れた場合)</li><li><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非文字</anchor>の扱い</li></ul></figure></p></section><section><h1>十六進記法 (Unicode 正規表現)</h1><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:">Unicode正規表現</anchor>においては、
<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ruby xmlns="http://www.w3.org/1999/xhtml">十<rt>じゅう</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">六<rt>ろく</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">進<rt>しん</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">記<rt>き</rt></ruby><ruby xmlns="http://www.w3.org/1999/xhtml">法<rt>ほう</rt></ruby><rt xmlns="http://www.w3.org/1999/xhtml">Hex Notation</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="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal></src></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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進記法</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:">Unicode符号点</anchor>
[ <code>U+0000</code>, <code>U+10FFFF</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="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal> RL1.1</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="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:">サロゲート符号点</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="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</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:">16進数</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-16符号単位</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">16進数</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="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal></src>。</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="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> 
<code>U+1D11E</code>
を
<code>\U0001D11E</code>,
<code>\x{1D11E}</code>,
<code>\u{1D11E}</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="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal></src></p></example><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> 
記法例として、次のような構文が定められています。 <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="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal></src></p><ul><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> <code>\u</code> の後に4つの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII十六進数字</anchor><ul><li><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:">ASCII十六進数字</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode符号点</anchor>を表します。</li></ul></li><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> <code>\u{</code> の後に<var>符号点</var>の並びの後に <code>}</code><ul><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> <var>符号点</var>は1から5個の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII十六進数字</anchor>か <code>10</code> の後に4個の
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII十六進数字</anchor></li><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>の並びは1個<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">以上</anchor>の<var>符号点</var>を
<code class="charname" xml:lang="en">SP</code> で区切ったもの</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>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode符号点</anchor>を順に並べたものを表します。</li></ul></li></ul><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="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> 
<cite xml:lang="en-us">UTS #18: Unicode Regular Expressions</cite>, <time>2022-02-08T14:02:12.000Z</time>, <time>2022-11-13T03:56:15.819Z</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://unicode.org/reports/tr18/#Hex_notation">https://unicode.org/reports/tr18/#Hex_notation</anchor-external></li></ul></refs></section><section><h1><code>\u<var>HHHH</var></code> (Java)</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:">Java</anchor> の \u 符号化 (UnicodeEscape)
<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://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100850">http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100850</anchor-external>
<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://java.sun.com/docs/books/jls/first_edition/html/3.doc.html#100850">http://java.sun.com/docs/books/jls/first_edition/html/3.doc.html#100850</anchor-external>
<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.y-adagio.com/public/standards/tr_javalang2/lexical.doc.html">http://www.y-adagio.com/public/standards/tr_javalang2/lexical.doc.html</anchor-external>
<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.y-adagio.com/public/standards/tr_javalang/3.doc.htm">http://www.y-adagio.com/public/standards/tr_javalang/3.doc.htm</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ABNF</anchor> に翻訳すると、<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> UnicodeEscape = &quot;\&quot; 1*('u') 4HEXDIGIT</li></ul></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:">Mozilla</anchor> でも使われていて、 <code>x-u-escaped</code> と呼ばれている。</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> U+10000 〜 をどう表現するのかは不明。<ul><li><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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">JavaSDK</anchor> に <code>native2ascii</code> というのが入ってます。これを使って変換します。</li><li><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="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;3</anchor-internal> にあるように <code>\uu4E00</code> みたいな書き方が可能 (意味は <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal> 参照。) なの (は Java 以外の実装、例えば Mozilla とかが対応しているのか) と、 <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> の疑問があるのですが、なんせ &quot;\u&quot; なんてどこの検索円陣にも掛からないし、さぱーりわからない。</li><li><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> Java や Mozilla とは関係なしに、各種言語・表記法などで、従来の <code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">\x</anchor></code> などのオクテット表現方法の延長として <code>\u<var>HHHH</var></code> が使われることがよくあります。</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-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> のような場合で、 <code class="char">U+FFFF</code> より大きいのを表現する方法は、 <code>\U<var>HHHHHH</var></code> を使う方法と <code>\U<var>HHHHHHHH</var></code> を使う方法があります。 (後者がお勧め。) ほかに<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">サロゲート</anchor>を使ってがんばる処理系もあるかもしれませんが、萎え萎え。</li></ul></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-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>-9 Java では <code>\U<var>HHHHHH</var></code> とするようです。</p><p><em>Supplementary Characters in the Java Platform</em> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://java.sun.com/developer/technicalArticles/Intl/Supplementary/">http://java.sun.com/developer/technicalArticles/Intl/Supplementary/</anchor-external></p></section><section><h1><code>\uHHHH</code> (JavaScript)</h1><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:">JavaScript</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規表現</anchor>で \u の後に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">十六進数</anchor>が4桁続かない場合、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ES3</anchor> によると構文エラーのはずですが、どのブラウザでも、 \
がなかった場合と同じように処理されます。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<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://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0Adocument.write%20(%22u1%22.match(%2F%5E%5Cu1%24%2F)%3F1%3A0)%3B%0A%3C%2Fscript%3E">http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cscript%3E%0Adocument.write%20(%22u1%22.match(%2F%5E%5Cu1%24%2F)%3F1%3A0)%3B%0A%3C%2Fscript%3E</anchor-external></comment-p></section><section><h1><code>\u'<var>HHHH</var>'</code> (RFC 5137)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5137</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">BCP 137</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>を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">escape</anchor> するための方法で勧められるものを2つ挙げています。
そのうちの1つが ¥u'HHHH' のような書式です。</p><pre>   EmbeddedUnicodeChar =  %x5C.75.27 4*6HEXDIG %x27
      ; starting with lowercase &quot;\u&quot; and &quot;'&quot; and ending with &quot;'&quot;.
      ; Note that the encodings are considered to be abstractions
      ; for the relevant characters, not designations of specific
      ; octets.</pre><pre>   HEXDIG =  &quot;0&quot; / &quot;1&quot; / &quot;2&quot; / &quot;3&quot; / &quot;4&quot; / &quot;5&quot; / &quot;6&quot; / &quot;7&quot; / &quot;8&quot; / &quot;9&quot; /
      &quot;A&quot; / &quot;B&quot; / &quot;C&quot; / &quot;D&quot; / &quot;E&quot; / &quot;F&quot;</pre><p><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 5234の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>・<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>は区別しません。
(「\u」の部分は<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="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:">RFC 5137</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>も勧めています。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">C</anchor> 式の「\uHHHH」/「\UHHHHHHHH」表記、  <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Perl</anchor> 風の「¥x{H}」表記、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Java</anchor> 式の「\uHHHH」+ <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代理組</anchor>表記は「通常は勧められない」としています。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">C</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="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> <cite xml:lang="en">RFC 5137 - ASCII Escaping of Unicode Characters</cite>
(<time>2015-07-26 17:06: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://tools.ietf.org/html/rfc5137#section-5.1">https://tools.ietf.org/html/rfc5137#section-5.1</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <cite xml:lang="en">draft-klensin-encoded-word-type-u-00 - The &quot;U&quot; Encoding for Encoded-Words in Email</cite>
(<time>2016-01-11 02:26:53 +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-klensin-encoded-word-type-u-00">https://tools.ietf.org/html/draft-klensin-encoded-word-type-u-00</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> この方法が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor> 以外で使われるのは見たことがありません。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor> は世間一般で広く普及した形式を奇妙にアレンジするのが好きなようです。</p></section><section><h1>Universal character name</h1><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> <cite xml:lang="ja">本の虫: C++0xにおけるユニバーサルキャラクタ名(universal character name)について</cite>, <time>2023-08-10T09:22:16.000Z</time>, <time>2023-08-10T10:05:59.812Z</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://cpplover.blogspot.com/2008/12/c0xuniversal-character-name.html">https://cpplover.blogspot.com/2008/12/c0xuniversal-character-name.html</anchor-external></p><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> <cite xml:lang="ja">Universal Character Name – EmEditor (テキストエディタ)</cite>, <time>2023-08-10T10:06:31.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://jp.emeditor.com/text-editor-features/more-features/universal-character-name/">https://jp.emeditor.com/text-editor-features/more-features/universal-character-name/</anchor-external></p><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> <cite>D.1.4 Universal Character Names (UCN) (Sun Studio 12 Update 1: C User's Guide)</cite>, <time>2023-08-10T10:06:50.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://docs.oracle.com/cd/E19205-01/820-7598/bjazf/index.html">https://docs.oracle.com/cd/E19205-01/820-7598/bjazf/index.html</anchor-external></p><p><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> <cite xml:lang="en-us">String and character literals (C++) | Microsoft Learn</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">TylerMSFT</anchor>, <time>2023-08-10T10:08:03.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://learn.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp?view=msvc-170#bkmk_UCN">https://learn.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp?view=msvc-170#bkmk_UCN</anchor-external></p></section><section><h1>EWTS</h1><p><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> 
<code>\u</code> (4桁)、 <code>\U</code> (8桁)
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>EWTS</anchor> </sw-see></p></section><section><h1>関連</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <code>U+</code> や <code>%u</code> も参照。</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> <code>\x</code> も参照。</p></section><section><h1>メモ</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <cite>Unicode の文字列をソースコードに埋め込む方法 - いやなブログ</cite> (<code>2007-09-09 19:34:15 +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://0xcc.net/blog/archives/000183.html">http://0xcc.net/blog/archives/000183.html</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">rfc3862</cite>, <time>2021-06-11T05:05:37.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://datatracker.ietf.org/doc/html/rfc3862#section-2.3">https://datatracker.ietf.org/doc/html/rfc3862#section-2.3</anchor-external></p></section></body></html>