<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="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> 
<dfn>内部表現</dfn>、<dfn>内部コード</dfn> (<dfn>内部符号</dfn>) は、内部用の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">データ</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">データ構造</title></anchor>です。</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:">系</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="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部表現</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">情報処理</anchor>に適した形態が選ばれます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>や個々の実装によって異なり得ます。</p><section><h1>内部コード (文字コード)</h1><figure class="short list"><figcaption><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:">内部コード</anchor>の体系</figcaption><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">固定長EUC</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Mule内部コード</anchor></li><li><code>x-moe-internal</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">i18n Arena internal encoding</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">NULL終端</anchor></li><li><code>wchar_t</code></li><li><code>w3m-euc-japan</code></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml">utf8</code> (Perl)</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WTF-8</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-16</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UCS-2</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UCS-4</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicodeの符号空間</anchor></li></ul></figure><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:">外部コード</anchor>と同じものが<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">内部コード</anchor>として使われることもよくあります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">PUA</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:">WTF-8</anchor> や <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">surrogateescape</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="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:">文字コード</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="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:">EOF</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="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:">外部符号</anchor>との接点で確実に変換する必要があります。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プログラミング言語</anchor>の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列型</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列型</anchor>のように構造上明確に違いを表現できる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>もあれば、
不明瞭な<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プラットフォーム</anchor>もあるので、開発者は注意する必要があります。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="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:">セキュリティー<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文字のセキュリティー</title></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="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="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;12</anchor-internal> のような場合にはこれを漏らしがちなので十分な注意が必要です。</comment-p><hr></hr><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:">skf</anchor> の<dfn>内部コード<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">skf内部コード</title></dfn>は <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">UTF-32</anchor> と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">言語符号<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">skf言語</title></anchor>で構成されます。
また、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">EOF</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:"><cite xmlns="http://www.w3.org/1999/xhtml">skf</cite> <code xmlns="http://www.w3.org/1999/xhtml">skf_2.00.17.tar.xz</code> の <code xmlns="http://www.w3.org/1999/xhtml">doc/2.internal_code.txt</code></src></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <cite>Re: User specified content type / w3mmee support</cite>, <time>2004-06-23T04:22:48.000Z</time>, <time>2024-09-09T15:17:32.875Z</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://emacs-w3m.namazu.org/ml/msg00848.html">http://emacs-w3m.namazu.org/ml/msg00848.html</anchor-external></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="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;9</anchor-internal> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">w3m-m17n</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 2022</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Big5</anchor>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">GBK</anchor>,
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Unicode</anchor> などを扱い得る 1-6バイト可変長符号。</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:">w3m-euc-japan</anchor></comment-p></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>,
<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:">MSB</anchor></p></section><section><h1>メモ</h1></section></body></html>