EN JA
EUC(5)
EUC(5) FreeBSD File Formats Manual EUC(5)

名称

eucワイドキャラクタの EUC エンコーディング

書式

ENCODING “EUC”


VARIABLE len1 mask1 len2 mask2 len3 mask3 len4 mask4 mask

解説

EUC は 4 種類のマルチバイトコードセットで構成されています。コードセット 0 は、1 個のマルチバイト文字が 0x00 から 0x7f の範囲の 1 バイトで始まる len1 バイトで構成されます。 ASCII 文字集合を扱えるよう、 len1 は常に 1 に設定されています。コードセット 1 のマルチバイト文字は 0x8e と 0x8f を除く 0x80 から 0xff の範囲のバイトで始まる len2 バイトで構成されます。コードセット 2 のマルチバイト文字は 0x8e バイトで始まる len3 バイトで構成されます。コードセット 3 のマルチバイト文字は 0x8f バイトで始まる len4 バイトで構成されます。

EUC マルチバイト文字の wchar_t エンコーディングは、 len および mask 引数に依存します。先ず、以下のように wchar_t にバイトが移動されます:

byte0 << ((lenN-1) * 8) | byte1 << ((lenN-2) * 8) | ... | bytelenN-1

その結果はそれから ~mask と AND をとられ、 maskN と OR をとられます。コードセット 2 と 3 は特殊で、前のバイト (0x8e または 0x8f) が最初に取り除かれ lenN 引数が 1 減少させられます。

例えば、 ja_JP.eucJP ロケールは以下の VARIABLE 行を持っています:

VARIABLE 1 0x0000 2 0x8080 2 0x0080 3 0x8000 0x8080

コードセット 1 は 0x0000 - 0x007f の値で構成されます。

コードセット 2 は 0x8080 のビットが 1 である値で構成されます。

コードセット 3 は 0x0080 - 0x00ff の値で構成されます。

コードセット 4 は 0x0080 のビットが 1 である値を除外した 0x8000 - 0xff7f の値で構成されます。

グローバルな mask は 0x8080 にセットされ、これはこれら 2 ビットからそのコードセットが決定されることを意味していることに、注意してください。

関連項目

mklocale(1), setlocale(3)
November 8, 2003 FreeBSD