<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="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <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>を区別しない</dfn> (<dfn>case‐insensitive</dfn>) <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>を扱う場合には様々な可能性があり、処理も複雑化します。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> 区別しない<anchor 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:">case folding</anchor> があります。 <dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</anchor></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:">文字列</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><sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>大文字と小文字を持つ書字体系</anchor> </sw-see></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <em>case</em> はここでは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>の事を指し、
<em>sensitive</em> とは<em>繊細</em>という意味,
<em>insensitive</em> はその逆ですから、<em>大文字・小文字を区別しない</em>ことをあらわします。</p><section><h1>大文字と小文字を区別しない比較の方法</h1><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> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII大文字・小文字不区別</anchor></strong>は、<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>と<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:">HTML</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="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">byte case-insensitive</anchor></strong>は、 <code>0x00</code>-<code>0x7F</code> を <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor>
として解釈した時に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>を同一視したとみなされるような、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>に関する比較方法です。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTTP</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>を扱う場面で用いられています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRCにおける大文字と小文字</anchor></strong>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IRC</anchor> が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">欧州</anchor>で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO/IEC 646の版</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>と<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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">単純case folding</anchor></strong>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Standard</anchor> で定義されている最も単純な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</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> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定無case一致</anchor></strong>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Standard</anchor> で定義されている基本的な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</anchor>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">完全case folding</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="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正準無case一致</anchor></strong>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Standard</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:">case folding</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="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換性無case一致</anchor></strong>は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Standard</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:">case folding</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="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">識別子無case一致</anchor></strong>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Standard</anchor> で定義されている<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">識別子</anchor>のための <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</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="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">i;unicode-casemap</anchor></strong> における<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">比較</anchor>は、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IETF</anchor> によって定義された独自の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</anchor>
を用いており、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Standard</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="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:">Stringprep</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロファイル</anchor>にも <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</anchor> が組み込まれていることがあります
(<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;32</anchor-internal>)。</p></section><section><h1>言語と大文字・小文字</h1><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>と<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:">Unicode Standard</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>に依存しない<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">既定<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Default</rt></rubyb>の方法を定義し、
必要に応じてそれを<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">tailoring</rt></rubyb></dfn>て<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="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</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/versions/Unicode6.2.0/ch03.pdf#page=62">http://www.unicode.org/versions/Unicode6.2.0/ch03.pdf#page=62</anchor-external></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> <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/versions/Unicode6.2.0/ch05.pdf#page=29">http://www.unicode.org/versions/Unicode6.2.0/ch05.pdf#page=29</anchor-external></li></ul></refs><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> <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:">Unicode Standard</anchor> <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;16</anchor-internal></src>
には次のものが挙げられています。</p><figure><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">トルコ語</anchor>における <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">I</anchor></code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <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:">i</anchor></code></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オランダ語</anchor>における <code class="char"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IJ</anchor></code> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">titlecase</anchor> 化</li><li><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>の<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="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:">caseless</anchor> な文字を含む場合の2文字目以降の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">titlecase</anchor> 化</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> <code class="charname" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">LATIN SMALL LETTER SHARP S</anchor></code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>化</li></ul></figure><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> このうち <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;18</anchor-internal> と <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> については <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode Character Database</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SpecialCasing.txt</anchor>
に情報が含まれています。</p></section><section><h1>プロトコルにおける大文字と小文字</h1><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:">DNS</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>を参照。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Stringprep</anchor> には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</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:">Nameprep</anchor> などで使われています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Stringprep</anchor> 参照。</comment-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> 多くの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プログラミング言語</anchor>やその<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>操作を行う<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ライブラリー</anchor>には、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>の変換や比較のための<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">関数</anchor>などが含まれています。
古めの<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語</anchor>では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">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:">Unicode</anchor> のいずれかの定義に従った変換が実装されているのが普通です。</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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">正規表現</anchor>の多くの実装には <code class="regexp"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">i</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:">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="49" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[49]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">OpenTypeにおける大文字と小文字</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル名における大文字と小文字</anchor></p></section><section><h1>case folding と大文字・小文字</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</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="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Cherokee</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="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:">Web</anchor> では当初<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">小文字</anchor>の比較をどう行うか明確に定義してこなかったため、
実装によって比較の方法が異なっていたり、場面によって異なっていたりすることもありました。
しかし現在では原則として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII大文字・小文字不区別</anchor>な比較を行うように <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</anchor>、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> などすべて共通化されていて、ごく一部でのみ<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">互換性大文字・小文字不区別</anchor>が使われています。</p><section><h1>大文字・小文字不区別文字列比較算法</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="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:">HFS Plus</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ファイル名</anchor>では<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>大文字・小文字不区別文字列比較算法</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">Case-Insensitive String Comparison Algorithm</rt></rubyb></dfn>
(<dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">FastUnicodeCompare</anchor></dfn>) が使用されています。</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="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <cite>Technical Note TN1150: HFS Plus Volume Format</cite> (<time>2014-03-30 10:39:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://developer.apple.com/legacy/library/technotes/tn/tn1150.html#StringComparisonAlgorithm">https://developer.apple.com/legacy/library/technotes/tn/tn1150.html#StringComparisonAlgorithm</anchor-external><ul><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> <del><cite>Technical Note TN1150: HFS Plus Volume Format</cite>  <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://developer.apple.com/library/mac/#technotes/tn/tn1150.html#StringComparisonAlgorithm">http://developer.apple.com/library/mac/#technotes/tn/tn1150.html#StringComparisonAlgorithm</anchor-external></del></li></ul></li></ul></refs></section><section><h1>Unicode の版</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">大文字</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="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:">Unicode</anchor> の版は明記されておらず、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> の拡張に合わせて更新されている形跡は見当たりません。</p></section></section><section><h1>古い HTML 5 の定義</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:">Web Forms 2.0</anchor> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">比較</anchor>に<dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>大文字</anchor>・<anchor>小文字</anchor>を区別しない<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">case‐insensitive</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:">Unicode</anchor> で規定された <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">case folding</anchor>
を実行<strong><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">しなければなりません</anchor></strong>。</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://www.whatwg.org/specs/web-forms/current-work/#case-insensitive">http://www.whatwg.org/specs/web-forms/current-work/#case-insensitive</anchor-external></comment-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 xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</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>を使っています。</p></section></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:">文字</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>と<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:">ASCII文字</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="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <cite xml:lang="en">Charinfo — &quot;İ&quot;</cite> (<time>2014-03-30 10:50:27 +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://chars.suikawiki.org/char/0130">http://chars.suikawiki.org/char/0130</anchor-external></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> <cite xml:lang="en">Charinfo — &quot;ı&quot;</cite> (<time>2014-03-30 10:50:43 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://chars.suikawiki.org/char/0131">http://chars.suikawiki.org/char/0131</anchor-external></li></ul></refs></section><section><h1>メモ</h1><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>OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 2: Recalculated Formula (OpenFormula) Format</cite>
(<time>2011-09-29 13:00:00 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part2.html#LOWER">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part2.html#LOWER</anchor-external></p><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> <cite>OASIS Open Document Format for Office Applications (OpenDocument) Version 1.2 - Part 2: Recalculated Formula (OpenFormula) Format</cite>
(<time>2011-09-29 13:00:00 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part2.html#UPPER">http://docs.oasis-open.org/office/v1.2/os/OpenDocument-v1.2-os-part2.html#UPPER</anchor-external></p><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> <cite xml:lang="en">utf8_unicode_ci に対する日本の開発者の見解 - かみぽわーる</cite>
(<time>2015-03-09 13:57:40 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://blog.kamipo.net/entry/2015/03/08/145045">http://blog.kamipo.net/entry/2015/03/08/145045</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <cite xml:lang="en">RFC 7790 - Mapping Characters for Classes of the Preparation, Enforcement, and Comparison of Internationalized Strings (PRECIS)</cite>
(<time>2016-03-31 03:20:06 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7790">https://tools.ietf.org/html/rfc7790</anchor-external></p><figure class="quote"><figcaption><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> <cite xml:lang="en">RFC 5323 - Web Distributed Authoring and Versioning (WebDAV) SEARCH</cite>
(<time>2017-10-01 13:49:21 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc5323#section-5.18">https://tools.ietf.org/html/rfc5323#section-5.18</anchor-external></figcaption><blockquote><p>The possible values for &quot;caseless&quot; are &quot;yes&quot; or &quot;no&quot;.  The default</p><p>value is server-specified.  Caseless matching SHOULD be implemented</p><p>as defined in Section 5.18 of the Unicode Standard (<strong>[</strong>UNICODE5<strong>]</strong>).</p></blockquote></figure><ul><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> <cite xml:lang="ja">欧文組版のマナー実例: ロゴを文中で再現しない : デザインの現場 小林章の「タイプディレクターの眼」</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">type_director</anchor>, <time>2020-12-29T09:19:19.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://blog.excite.co.jp/t-director/29042066/">https://blog.excite.co.jp/t-director/29042066/</anchor-external></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> <cite xml:lang="ja">欧文組版のマナー実例: ロゴを文中で再現しない(2) : デザインの現場 小林章の「タイプディレクターの眼」</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">type_director</anchor>, <time>2020-12-29T09:21:04.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://blog.excite.co.jp/t-director/29043509/">https://blog.excite.co.jp/t-director/29043509/</anchor-external></li><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> <cite xml:lang="ja">欧文組版のマナー実例: ロゴを文中で再現しない(3) : デザインの現場 小林章の「タイプディレクターの眼」</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">type_director</anchor>, <time>2020-12-29T09:22:14.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://blog.excite.co.jp/t-director/29044683/">https://blog.excite.co.jp/t-director/29044683/</anchor-external></li></ul><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="en-us">Registered features, a-e (OpenType 1.9.1) - Typography | Microsoft Learn</cite>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PeterCon</anchor>, <time>2024-07-07T00:58:54.000Z</time>, <time>2024-12-06T12:36:20.409Z</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/typography/opentype/spec/features_ae">https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae</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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;50</anchor-internal> 「casing pair」 大文字と小文字の対のこと</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> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="50" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;50</anchor-internal> 「bicameral script」 大文字と小文字がある<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">用字系</anchor></p></section></body></html>