UTF-EBCDICは、 Unicodeの有効な文字コード ポイント1,112,064 個すべてを1 ~ 5バイトでエンコードできる文字エンコーディングです( UTF-8の最大 4 バイトとは対照的です)。[ 1 ] EBCDICとの互換性を考慮して設計されているため、メインフレーム上の従来の EBCDIC アプリケーションでも文字を問題なく処理できます。既存の EBCDIC ベースのシステムに対するその利点は、既存のASCIIベースのシステムに対するUTF-8の利点と同様です。UTF-EBCDIC の詳細については、Unicode テクニカル レポート #16 で定義されています。
一連の Unicode コード ポイントの UTF-EBCDIC エンコード バージョンを生成するには、まず UTF-8 に基づくエンコーディング (仕様では UTF-8-Mod と呼ばれます) が適用されます (仕様では I8 シーケンスと呼ばれます)。このエンコーディングと UTF-8 の主な違いは、Unicode コード ポイントU+0080からU+009F ( C1 制御コード) を 1 バイトとして表現できるため、後で対応する EBCDIC 制御コードにマッピングできることです。これを実現するために、UTF-8-Mod では、マルチ バイト シーケンスの末尾バイトのフォーマットとして10xxxxxxの代わりに101xxxxxxを使用します。これは 6 ビットではなく 5 ビットしか保持できないため、 U+03FFを超えるコード ポイントの UTF-8-Mod エンコーディングはUTF-8 エンコーディングよりも大きくなります。
UTF-8-Mod変換では、データはASCIIベースの形式のままになります(例えば、U+0041 "A"は依然として0x41としてエンコードされます)。そのため、各バイトは可逆(1対1)ルックアップテーブルに渡され、最終的なUTF-EBCDICエンコーディングが生成されます。例えば、このテーブルでは0x41は0xC1にマッピングされます。したがって、 U+0041(Unicodeの"A")のUTF-EBCDICエンコーディングは0xC1(EBCDICの"A"))となります。
UTF-EBCDICは、それが設計されたEBCDICベースのメインフレームでさえ、ほとんど使用されていません。z /OSなどのIBM EBCDICベースのメインフレームオペレーティングシステムは、通常、完全なUnicodeサポートのためにUTF-16を使用します。例えば、IBM Db2、COBOL、PL/I、Java 、およびIBM XMLツールキットは、IBMメインフレーム上でUTF-16をサポートしています。
UTF-EBCDIC には 160 種類の 1 バイト エンコーディングの文字があります (UTF-8 では 128 種類)。ご覧のとおり、角括弧の位置により、1 バイト部分は IBM-37 ではなく IBM -1047に似ています。CCSID 37 では、角括弧はそれぞれ 16 進数の AD と BD ではなく、BA と BB にあります。
Oracle UTFEはUnicode 3.0 UTF-8 Oracleデータベースのバリエーションで、 UTF-8のCESU-8バリアントに似ており、補助文字は単一の4バイトまたは5バイト文字ではなく、2つの4バイト文字としてエンコードされます。EBCDICプラットフォームでのみ使用されます。[ 2 ]
最大で5バイト(ISO/IEC 10646の31ビットの全範囲を考慮すると7バイト)を逆方向に検索する必要があります。