<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="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:">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>というかには色々な解釈があります。</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> 
似て非なる定義がいくつかあって、
それらの意味も不明瞭なところがあり、
混乱の元となるのでこうした用語は使うべきではないのかもしれません。</p><section><h1>ASCII 互換文字符号化 (Web)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <dfn><rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII 互換文字符号化<rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">ASCII-compatible character encoding</rt></rubyb></dfn>とは、ある程度 <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:">HTML</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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite xml:lang="en-US-x-hixie">HTML Standard</cite> (<time>2013-11-22 20:38:38 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.whatwg.org/specs/web-apps/current-work/#ascii-compatible-character-encoding">http://www.whatwg.org/specs/web-apps/current-work/#ascii-compatible-character-encoding</anchor-external></li></ul></refs></section><section><h1>定義</h1><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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">単一バイト</anchor>または可変長の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">符号化</anchor>であって、 
0x09, 0x0A, 0x0C, 0x0D, 0x20 - 0x22, 0x26, 0x27, 0x2C - 0x3F, 0x41 - 0x5A, 0x61 - 0x7A
の範囲の第1<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト</anchor>がすべて <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Windows-1252</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>といいます。 <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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;1</anchor-internal></src></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:">ISO-2022-JP</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HZ-GB-2312</anchor> は ASCII 非互換のように思えますが、
仕様書の注釈によってこれらは
ASCII 互換に含まれるとされています。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> 同じく注釈によると <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-16</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-7</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GSM03.38</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EBCDIC</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="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;4</anchor-internal> が含まれるなら <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-7</anchor> も ASCII 互換に含まれていいようなものですが、
<code xmlns="http://www.w3.org/1999/xhtml"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">+</anchor></code> などが条件に合致しないのでしょう。</comment-p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="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:">Encoding Standard</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:">utf-16be</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:">replacement</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="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:">ISO/IEC 646の版</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII互換文字符号化</anchor>です。 (おそらく意図的にそう定義されているのでしょう。)</p></section><section><h1>歴史</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> <cite xml:lang="en">Remove allow non-ASCII-compatible encodings flag · whatwg/html@c485b70</cite>
(<time>2016-02-10 21:55:19 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/commit/c485b70bfe41ed1302c451bc62b58df80cffd325">https://github.com/whatwg/html/commit/c485b70bfe41ed1302c451bc62b58df80cffd325</anchor-external></p></section></section><section><h1>US-ASCII と互換 (HTTP)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">RFC 7617</anchor> は、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">基本認証</anchor>における「<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">US-ASCII</anchor>と互換」を、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">US-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:">US-ASCII</anchor> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字コード</anchor>と同じ1バイトに<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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal></src> と定義しています。 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII互換文字符号化</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="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:">ISO-2022-JP</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EUC-JP</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Encoding Standard</anchor> 
の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">shift_jis</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:">HZ-GB-2312</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-7</anchor> は
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII互換</anchor>ではありません。</comment-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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite xml:lang="en">RFC 7617 - The 'Basic' HTTP Authentication Scheme</cite> (<time>2015-10-01 09:47:40 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://tools.ietf.org/html/rfc7617#section-2">https://tools.ietf.org/html/rfc7617#section-2</anchor-external></li></ul></refs></section><section><h1>ASCII 互換エンコーディング (Ruby)</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:">Ruby</anchor>
における<dfn>ASCII互換エンコーディング</dfn>は、</p><blockquote><p><snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip> US-ASCII に含まれる文字を \x00-\x7F で表し、ロッキングシフトを用いない エンコーディング<snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip></p></blockquote><p>です。
<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="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal></src></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:">shift_jis</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EUC-JP</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:">ASCII 互換でないエンコーディング</anchor>の例として、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO-2022-JP</anchor> や
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-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="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> 
通常の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ISO-2022-JP</anchor> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII</anchor> を [ <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x00</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x7F</n> ]
で表し、<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:">ISO/IEC 2022</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="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:">shift_jis</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>以外が [ <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x00</n>, <n xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">0x7F</n> ]
を使うことは定義に反しないようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> 
また、「Ruby のエンコーディングのサポート水準」
として、</p><ul><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:">ASCII互換エンコーディング</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:">ASCII互換ではないエンコーディング</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></li></ul><p>... の3段階があります。ここで、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII互換ではないエンコーディング</anchor>には 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-16BE</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-16LE</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-2022-JP</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-7</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="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> 
<dfn>ダミーエンコーディング</dfn>とは</p><blockquote><p><snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip> Ruby が名前を知っているが、 文字の列としての処理に対応していないエンコーディングのことです。 実際には ISO-2022-JP や UTF-7 のようなステートフルエンコーディングがダミーエンコーディングになります。 <snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip></p></blockquote><p>と説明されています。 <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="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal></src></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> 
つまり、<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><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="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:">ASCII互換</anchor>かどうかは構造に基づく名称で、
ダミーかどうかは <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Ruby</anchor> の実装上の状態に基づく名称で、
2つの異なる評価軸が混ざって用語定義が難しくなっています。</comment-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="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> 
<cite xml:lang="ja-JP">多言語化 (Ruby 1.9.3)</cite>, <time>2016-08-28T13:48:39.000Z</time>, <time>2025-11-06T08:21:21.595Z</time> <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://docs.ruby-lang.org/ja/1.9.3/doc/spec=2fm17n.html#encoding">https://docs.ruby-lang.org/ja/1.9.3/doc/spec=2fm17n.html#encoding</anchor-external></li></ul></refs><hr></hr><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> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Ruby</anchor> には <dfn><code>ASCII-8BIT</code></dfn>
という名前の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">エンコーディング</anchor>があり、</p><blockquote><p>Ruby の String は、文字の列を扱うためだけでなく、バイトの列を扱うためにも使われます。 しかし、Ruby M17N には直接にバイナリを表すエンコーディングは存在しません。 このため、バイナリを String で扱う際には、ASCII 互換オクテット列を意味する ASCII-8BIT を用います。<snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip></p></blockquote><p>と説明されています。 <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="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal></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:">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>に加えて、
<dfn>ASCII互換オクテット列</dfn> = <code>ASCII-8BIT</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><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="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> 
任意の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイナリーデータ</anchor>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII互換</anchor>かどうか定かではないわけで、
「ASCII互換オクテット列」
とみなすべきものはプログラム開発者が <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>とは分けて扱う必要がありそうですが、
そのあたりがどうモデル化されているのかはこのドキュメントからは明らかではありません。</comment-p></section><section><h1>7ビットクリーン</h1><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> 
<dfn>7ビットクリーン</dfn>なる語が <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII互換</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="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:">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:">ASCII</anchor> と関係が深い言葉であり、
もしかすると<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">7ビットクリーン</anchor>も<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8ビットクリーン</anchor>からの連想で作られた言葉かもしれません。
しかし、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">7ビットクリーン</anchor>という言葉はほとんど聞きませんし、
どのへんに「クリーン」さを感じて使っている語なのかもいまいちはっきりしません。
多用される<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">8ビットクリーン</anchor>との対比になっていないわかりにくい語なので、
使うべきではないでしょう。</comment-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> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Ruby</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="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;15</anchor-internal></src></p><blockquote><p>ASCII互換エンコーディングである文字列や正規表現は、7bit クリーンな文字列や正規表現と、 結合・比較・マッチ等を行うことができます。</p><p><b>7bit クリーンな文字列</b></p><p>ASCII 互換エンコーディングをもつ 7bit クリーンな文字列は、 他の ASCII 互換エンコーディングを持つ文字列と結合・比較が可能です。 例えば、ASCII 互換エンコーディングをもつ文字列に、 7bit クリーンな文字列をエンコーディングの変換なしで結合することができます。 また、通常 Ruby の文字列比較メソッドである String#== は、 2 つの文字列のエンコーディングが異なっていると、バイト列としては一致していても false を返します。 しかし、7bit クリーンな文字列同士の比較の際は、 両者の文字エンコーディングが異なっていても、バイト列として一致していれば true を返します。 </p><p><snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip>このため、バイナリを String で扱う際には、ASCII 互換オクテット列を意味する ASCII-8BIT を用います。 これにより、ASCII 互換であるこの String は 7bit クリーンな文字列と比較・結合が可能となります。 </p><p><snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip>ダミーエンコーディングを持つ文字列の扱いは以下のように制限されます。</p><ul><li><snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip></li><li>エンコーディングの異なる 7bit クリーンな文字列との結合ができません。 例外 (EncodingCompatibilityError) が発生します。</li></ul></blockquote><p><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> 
この説明から何が<dfn>7bit クリーンな文字列</dfn>の定義であるのかははっきりしませんが、
どうやら<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">非ASCII文字</anchor>を含まないことは最低条件であると思われます。</p><hr></hr><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-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;31</anchor-internal> は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Python</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>Content-Transfer-Encoding</code> の <code>7bit</code> の説明で</p><blockquote><p>all data must be &quot;7 bit clean&quot; (ASCII-only). <snip xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"></snip></p></blockquote><p>とあります。すなわち <dfn>7 bit clean</dfn> とは <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="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:">MIME</anchor> の <code>7bit</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:">7ビット</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><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="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <cite xml:lang="ja">19.1.4. email.policy: ポリシーオブジェクト — Python 3.6.15 ドキュメント</cite>, <time>2021-12-29T22:58:39.000Z</time>, <time>2025-11-06T08:49:22.038Z</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.python.org/ja/3.6/library/email.policy.html">https://docs.python.org/ja/3.6/library/email.policy.html</anchor-external></li></ul></refs></section><section><h1>ACE (ドメイン名)</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">IDN</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:">Unicode</anchor>
を
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DNS</anchor>
等のために <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ASCII文字</anchor>に変換する手法です。
<sw-see xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"> <anchor>ACE</anchor> </sw-see></p></section><section><h1>関連</h1></section></body></html>