HZ文字エンコーディング[ 1 ]は、かつて電子メールやUSENETの投稿でよく使われていたGB 2312のエンコーディングです。これは1989年にスタンフォード大学のFung Fung Lee(中国語:李楓峰)によって設計され、その後1995年にRFC 1843にコード化されました。[ 2 ]
HZ (Hanzi 、簡体字中国語:汉字、繁体字中国語:漢字、文字通り「中国語の文字」の略)エンコーディングは、当時7ビット文字しか使用できなかった電子メールで中国語の文字を簡単に使用できるようにするために考案されました。そのため、標準的なISO 2022エスケープシーケンス(ISO-2022-JPの場合など)や8ビット文字( EUCの場合など)の代わりに、HZコードは印刷可能な7ビット文字のみを使用して中国語の文字を表します。
また、1980年代後半から1990年代初頭にかけて、8ビット文字やエスケープ文字の送信が一般的に許可されていなかったUSENETネットワークでも人気があった。
HZ は、行全体を GB 2312 テキストとしてマークするために文字で始まる以前の「zW」エンコーディングに取って代わりましたzW。[ 3 ]
HZ エンコーディングシステムでは、文字シーケンス "~{" と "~}" はエスケープシーケンスとして機能します。これらの間に挟まれた文字は、GB 2312 でエンコードされた中国語として解釈されます (最上位ビットは無視されます)。エスケープシーケンス以外の文字は、ASCIIであるとみなされます。
GB 2312、EUC-CN、およびHZコードの関係を説明するために、例を挙げます。
HZは元々7ビットコードとしてのみ使用されることを想定して設計されました。しかし、状況によっては、エスケープシーケンス「~{」と「~}」がEUC-CNで表現される文字を囲むことがあります。この代替的な使用方法により、HZデコーダーソフトウェアまたはEUC-CNを理解するシステムを使用して中国語を読み取ることが可能になります。
さらに、仕様書では以下のことが規定されています。
しかし、すべてのHZデコーダーがこれらの2つのルールに従うわけではありません。
最初のHZエンコーダとデコーダは、1989年にコードの発明者によってUnixオペレーティングシステム用に作成されました。[ 4 ]
Unixオペレーティングシステム用のhzttyプログラムも、初期のHZデコーダーの一つであり、最も人気のあるデコーダーの一つでした。このプログラムは、エスケープシーケンス(つまり「~{」と「~}」)を表示する点、および「~~」と「~」の後に続く改行を特別扱いしない点で、仕様から逸脱しています。これはおそらく、テキスト画面上で1文字が1つの画面位置を占めることを前提とするソフトウェアが、修正なしで正しく動作できるようにするためだったと考えられます。
Microsoft Windowsでのサポートは後から追加され、多くのサードパーティ製「中国製システム」がHZをサポートしています。これらのシステムでは、エスケープシーケンスを非表示にするオプションが提供される場合があります。
エスケープシーケンスが存在すること、さらにエスケープ区切り文字がASCIIで印刷可能な文字であることから、HZからUnicodeへの往復を行う攻撃バイトシーケンスを構築することは比較的容易である。そのため、HZエンコーディングの使用はマルウェア対策スイートによって疑わしいものとして扱われる。[ 5 ]