要約
- 1995年8月のRFC 1843は、ASCIIとGB2312の中国語を混ぜて運ぶ7ビット形式HZを記した。
~{でGBモードに入り、~}でASCIIに戻り、~~でチルダそのものを表した。 - 基本デコーダーは行長に依存せずバイト列を読む。RFCは別に、
moreのような道具に合わせてエンコーダーが物理行を80文字未満にする書き方を勧めた。GB区間を一度閉じ、改行後に再び開けば、復元される本文は続いたままになる。
同じバイトの意味を変える小さな門番
ASCIIを中心に作られた環境では、印字できる一バイトにはすでに英語の文字としての意味があった。一方、中国語の文字は当時の符号で二バイトを使い、コンピューターごとに内部表現も揃っていなかった。Fung Fung LeeのHZ文書は、GB2312を交換時の共通の文字集合に選び、電子メールを含む7ビットの経路で英語と中国語の混在文を運ぶ方法を示した。RFC 1843の冒頭にあるAbstractは、この内容がLee自身の1989年9月4日付の同題記事と同じだと明記している。1995年はRFCとして公開された年だ。発想はRFC番号をもらう前から旅をしていた。
HZの入口はASCIIモードだ。普段の文字はそのまま読み、チルダが現れると次の一文字で進路が決まる。~~はチルダを一つ出す。~{はGBモードを開く。チルダの直後にLFが来ると、物理的な続き行として読み捨てる。GBモードでは二バイトを一組ずつ取り、~}でASCIIに戻る。同じ値のバイトも、いまどのモードにいるかで意味が変わる。読者は直前に通った門を覚えていなければならない。
なぜチルダなのか。RFCではGB文字の第一バイトは16進数の$21から$77、第二バイトは$21から$7Eである。印字可能なASCIIの値はその範囲と重なる。チルダは$7Eで、GBの第一バイトに使える範囲の外側にある。そこで切り替えの合図にしても、中国語一文字の普通の先頭と取り違えにくい。見た目の軽さに似合わず、都合のよい位置にいた記号だった。
英語部分は読みやすさを保った。チルダだけは二つ重ねるが、ほかの通常のASCII文字はそのまま置ける。中国語もチルダも含まないファイルは、見た目にも普通のASCIIファイルと一致する。一つの文に英語があり、途中で中国語に入り、また英語へ戻る。HZは文書全体を一色に塗るより、この行き来を扱う設計だった。デコーダーが覚えるのは現在のモードという小さな状態である。
改行の扱いは別の見せ場だ。チルダに続くLFは復元後の文字を増やさない。送信側は長い物理行を折り、受信側には続いた本文を渡せる。RFC 1843は、基本デコーダーに行という概念が要らないと明言する。ファイル全体が一本の長い行でもよく、改行がまったくなくてもよい。現在のモードを持ち、最大一文字先を見れば、字句を追える。これが異なる実装が共有する細い約束だった。
もちろん、人間が使う端末には幅がある。LeeはUnixのmoreのようなページ送り道具のため、エンコーダーが物理行を80文字未満に収めることを勧めた。中国語の途中で行が尽きるなら、~}でGBを閉じ、チルダとLFの続き行を置き、次行で~{を使ってGBを再開する。ファイルは少し長くなるが、復元される本文はそこで切れない。RFCの例には、見た目の並べ方が違っても同じ文章に戻るものが並ぶ。
ここで「勧めた」が大事になる。短い行はHZの基本形式に組み込まれた義務ではなく、エンコーダーが選べる書き方だった。長い行を好む送り手も、ページ送りに合わせた送り手も、同じデコーダーを相手にできる。Leeは現在のモードが分かれば逆向きの走査も容易で、端末エミュレーターのバックスペース処理に役立つと述べる。交換するファイルだけでなく、書いている最中の画面まで視野に入った仕掛けだった。
翌1996年のRFC 1922はISO-2022-CNで中国語メールを扱い、行ごとの指定やシフトに別の規則を置いた。HZが示したのはチルダによる二モードの小さな文法と、物理行の幅をその文法の外で調整できることだ。7ビットの道幅は変わらない。門番の指示だけを短くして、通る文章の自由度を残した。
会員向け解説
プロフィールの詳細
適切な会員レベルでログインすると、解説全文と出典メモをご覧いただけます。
ストラテジックサークル限定
Strategic Circle
すべての読者に公開されています。参加してログインすると プロフィール解説 を閲覧できます。
Strategic Circle に参加Leadership Alliance 会員限定
Leadership Alliance
対象となる IP 資産の所有者・管理者向けです。ログインすると Leadership Alliance の解説を閲覧できます。
Leadership Alliance に参加





