F. Lee
Stanford University
August 1995
Network Working Group
Request for Comments: 1843
Category: Informational

HZ - A Data Format for
Exchanging Files of Arbitrarily Mixed
Chinese and ASCII characters

HZ — 中国語文字と ASCII 文字の
混在ファイルの交換用データ・フォーマット

このメモの位置づけ

このメモはインターネット・コミュニティーのために情報を提供するものである。 このメモではいかなる種類のインターネット標準も定めない。 このメモの配布に制限はない。

要旨

このメモの内容は、筆者が 1989 年 9 月 4 日に書いた同じタイトルの記事と同一のものである。 このメモでは、GB は GB2312-80 を表わす。 タイトルは、単なる歴史的理由から、そのままとしたことに留意されたい。 HZ は「ファイル交換」以外の目的にも広く利用されている。

1. はじめに

中国語文字と ASCII 文字とが自由に混在するテキスト・ファイルを扱うことのできる既存のコンピューター・システムは、ほとんどが 8 ビットの符号を利用している。 そのようなテキスト・ファイルを ASCII のコンピューター・システム上の電子メールを介して交換するには、それを 7 ビット形式に符号化する必要がある。 バイナリーを ASCII に符号化する汎用のソフトを使う手もあるが、そのような 8 ビット符号のための世界的な標準が存在しないため、十分なものではない。 たとえば、CCDOS(1) と Macintosh の中国語 OS とでは相異なる内部符号を使用している。 さいわい、中華人民共和国には中国語文字の符号化のための国家標準 GB (GuoBiao(2)) があり、上記のシステムで符号化された中国語文字も簡単な数式によって容易に GB に変換できる。 (中華民国の規格 BIG-5 は本稿の対象外である。)

HZ は、GB とASCII とが自由に混在するテキスト・ファイルの交換用に提案された 7 ビットのデータ・フォーマットである。 HZ はまた、GB と ASCII とが混在するテキスト・ファイルをリアルタイムに表示したり編集したりする端末エミュレーターの設計も視野に入れている。

2. 仕様

HZ のフォーマットは以下のとおり。

一般性を喪失することなく、すべての中国語文字 (漢字) が GB に符号化されているものと仮定する。 ひとつの GB (GB1 および GB2) 符号は 2 バイト符号であり、第一バイトは $21–$77 の範囲に、第二バイトは $21–$7E の範囲にある。

ASCII の図形文字は 1 バイトで、$21–$7E の範囲にある。 ASCII の非図形文字は、$0–$20 の範囲にあるか、または値 $7F の 1 バイトである。

ASCII の図形文字の範囲は GB のバイトの範囲と重なるため、$21–$7E の範囲のバイトはそれが存するモードに従って解釈される。 モードは 2 つあり、ASCII モードと GB モードである。

規約により、ASCII の非図形文字は ASCII モードにのみ現れる。

デフォルトのモードは ASCII モードである。

ASCII モードでは、「~」が現れないかぎり、1 バイトが 1 つの ASCII 文字と解釈される。 文字「~」はエスケープ文字である。 規約により、「~」の直後には「~」「{」「\n」(<LF>) のいずれかのみが続く。 これらには以下の特別な意味がある。

GB モードでは、エスケープ・シーケンス「~}」が読み込まれるまでは、文字は 2 バイトごとに (純然たる) GB 符号と解釈される。 「~}」はモードを GB から ASCII へ切り替える。 (エスケープ・シーケンス「~}」 ($7E7D) は定義済みの GB の範囲の外にあることに注意。)

復号処理は、以上の説明から明らかである。

符号化処理は単純である。 留意すべきは、(ASCII の) 「~」はつねに「~~」と符号化される点である。 GB 符号の列は「~{」と「~}」とで囲む。

3. 注意事項と推奨事項

「~」以外の ASCII 文字の符号化を、2 バイト符号とせずにそのままとすることにし、さらにデフォルトのモードに ASCII を選んだのは、以下の理由による。 すなわち、われわれが使用しているコンピューター・システムは ASCII に基づいている。 純粋な ASCII 文字を含んだ (つまり中国語文字を含まない) HZ ファイルは、「~」を別にすれば純粋な ASCII ファイルにほかならない。 一般に、HZ ファイルの英語 (ASCII) の部分は直接読むことができる。

エスケープ文字に「~」を選んだのは、それが ASCII の世界でお馴染みのやり方であるということのほかに、「~」 ($7E) が GB 符号の第一バイトの定義済みの範囲 ($21–$77) の外にあるということもある。

ASCII モードでは、その他の潜在的エスケープ・シーケンス、すなわち「~」で始まる (「~~」「~{」「~\n」以外の) 2 バイト・シーケンスは、HZ のシーケンスとしては現時点では無効である。 それゆえ、それらは HZ の将来の拡張のために完全な上位互換性を保ちながら利用することができる。

行継続標識「~\n」は、元のテキストにおける長い行を、このデータ・フォーマットで複数の短い行に符号化したいような場合に有用である。 復号処理で余分な改行文字を導入せずに済む。

一行の長さに制限はない。 事実、ファイル全体を長い一行にすることもできれば、改行文字を含まないものにすることさえできる。 この HZ データ・フォーマットの復号処理が行の概念に影響を与えるべきではないし、その必要もない。

HZ の復号処理も符号化処理も、書くのは容易である。 復号処理でも符号化処理でも、最大 1 文字を入力データ・ストリームから先読みする必要がある。

モードが与えられれば、HZ のデータ・ストリームを逆方向にスキャンして復号することも可能かつ容易である。 ただし、前提のひとつには、「バックスペース」が端末エミュレーターによって正しく処理されるということがある。

HZ フォーマットが理解できる端末エミュレーター上で、UNIX の more のような行やページのスキップをサポートしたプログラムをより効果的に利用するには、(HZ で出力する) 符号化ソフトの一行の最大長を 80 字未満にすることが推奨される。 「\n」は ASCII 文字であるため、HZ の構文からの当然の帰結として、行末に現れる GB 符号はエスケープ・シーケンス「~}」で終わらなければならず、行継続標識「~\n」が適切に挿入されることになる。 代償は、符号化されたファイルのサイズがわずかに大きくなることである。

以下の区別を理解することは重要である。 留意すべきは、上の推奨は HZ フォーマットを変えるものではないということである。 それはただ、HZ の構文に従ったうえでの符号化の「スタイル」である。 この「スタイル」は HZ に組み込まれたものではないことに留意されたい。 いわば、HZ の上に築かれた補助的規約である。 他のアプリケーションでは異なった「スタイル」が必要とされるかもしれないが、基本的な HZ 復号ソフトであれば必ず動作する。 HZ の真髄は、そのような柔軟かつ基本的なデータ・フォーマットを、中国語文字と ASCII 文字とが自由に混在するファイルのために提供することにある。

4. 例

HZ 符号化法の「スタイル」の問題を説明するために、以下に符号化済みのテキストの例を 3 つ示す。 これらは復号によって同じ出力が得られる。 (前節における推奨は例 2 である。)

例 1   (一行の長さが無制限であると仮定)

This sentence is in ASCII.
The next sentence is in GB.~{<:Ky2;S{#,NpJ)l6HK!#~}Bye.

例 2   (一行の最大長が 42 であると仮定)

This sentence is in ASCII.
The next sentence is in GB.~{<:Ky2;S{#,~}~
~{NpJ)l6HK!#~}Bye.

例 3   (モードが切り替わるたびに新たな行が開始されると仮定)

This sentence is in ASCII.
The next sentence is in GB.~
~{<:Ky2;S{#,NpJ)l6HK!#~}~
Bye.

謝辞

Edmund Lai は、この話題に私の注意を向けさせてくれた最初の人物である。 Ed のほか、Tin-Fook Ngai、Yagui Wei、Ricky Yeung との議論は、本稿の着想を形にするうえで非常に有益であった。 Tin-Fook には、草稿を注意深くレビューしてくれたこと、また数々の興味深い提案をしてくれたことに対し感謝する。

参照文献

[1] Fung Fung Lee, "HZ - A Data Format for Exchanging Files of Arbitrarily Mixed Chinese and ASCII Characters," September 4, 1989.
//ftp.ifcss.org/software/unix/convert/HZ-2.0.tar.gz の一部。

セキュリティーに関する考慮事項

セキュリティーの問題はこのメモでは扱わない。

著者連絡先

Fung Fung Lee
Computer Systems Laboratory
Stanford University
Stanford, CA 94309

Phone: +1 415 723 1450
EMail: lee@csl.stanford.edu

 


【訳注】

(1)  CCDOS は Chinese Character Disk Operating System の略。
(2)  GuoBiao は「国標」のピンイン表記。 「国標」は「国家標準」(Guojia Biaozhun) の略。

 



2007年06月09日公開
2008年04月06日更新
Translated by: Mendoxi (面独斎)
mendoxi@cam.hi-ho.ne.jp