スポンサーリンク

EUC(4) FreeBSD カーネルインタフェースマニュアル EUC(4)

名称

euc − EUC エンコーディング

書式

ENCODING "EUC"

VARIABLE len1 mask1 len2 mask2 len3 mask3 len4 mask4 mask

説明

EUC エンコーディングは、 UNIX ベースのシステムとの互換性を保つために提供 されています。 LC_TYPE ソースファイルのフォーマットに関する完全な説明を求 めるなら、 mklocale(1) を参照してください。

EUC は、4 つのマルチバイトコードセットを実装しています。 1 番目のコード セット中のマルチバイト文字は、0x00 から 0x7f までの範囲の 1 バイトから始 まる len1 バイトのデータで構成されています。 ASCII 文字が使えるようにする ため、 len1 は常に 1 です。 2 番目のコードセット中のマルチバイト文字は、 0x8e と 0x8f を除いた 0x80 から 0xff までの範囲の 1 バイトから始まる len2 バイトのデータで構成されています。 3 番目のコードセット中のマルチバイト文 字は、 1 バイト目が 0x8e で始まる len3 バイトのデータで構成されています。 4 番目のコードセット中のマルチバイト文字は、 1 バイト目が 0x8f で始まる len4 バイトのデータで構成されています。

EUC マルチバイト文字の rune_t エンコーディングは len および mask 引数に依 存しています。はじめに、各バイトは次のような式で rune_t に変換されます。

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

そして、この結果を ~mask と AND をとり、 maskN と OR をとります。コード セット 2 および 3 は処理が特殊で、最初に先頭バイト (0x8e あるいは 0x8f) を削除し、 lenN 引数の値を 1 減らします。

例えば、日本語ロケールは次のような VARIABLE 行を持っています。

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

コードセット 1 は、0x0000 から 0x007f までの値で構成されています。

コードセット 2 は 0x8080 ビットがセットされた値で構成されています。

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

コードセット 4 は 0x0080 ビットがセットされた値を除いた 0x8000 から 0xff7f までの値で構成されています。

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

- 日本語ロケール

以下に示す例は、日本語ロケール用の LC_CTYPE ソースファイルの完全な例で す。

/*
 * JIS 文字集合の EUC を用いた日本語 LOCALE_CTYPE の定義
 */

ENCODING

"EUC"

/*

JIS

JIS

JIS

*/

/*

X201

X208

X201

*/

/*

00-7f

84-fe

*/

VARIABLE

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

/*
* コードセット 1
*/

ALPHA

’A’ - ’Z’ ’a’ - ’z’

CONTROL

0x00 - 0x1f 0x7f

DIGIT

’0’ - ’9’

GRAPH

0x21 - 0x7e

LOWER

’a’ - ’z’

PUNCT

0x21 - 0x2f 0x3a - 0x40 0x5b - 0x60 0x7b - 0x7e

SPACE

0x09 - 0x0d 0x20

UPPER

’A’ - ’Z’

XDIGIT

’a’ - ’f’ ’A’ - ’F’

BLANK

’ ’ ’’

PRINT

0x20 - 0x7e

MAPLOWER

< ’A’ - ’Z’ : ’a’ > < ’a’ - ’z’ : ’a’ >

MAPUPPER

< ’A’ - ’Z’ : ’A’ > < ’a’ - ’z’ : ’A’ >

TODIGIT

< ’0’ - ’9’ : 0 >

TODIGIT

< ’A’ - ’F’ : 10 > < ’a’ - ’f’ : 10 >

/*
* コードセット 2
*/

SPACE

0xa1a1

PHONOGRAM

0xa1bc

SPECIAL

0xa1a2 - 0xa1fe

PUNCT

0xa1a2 - 0xa1f8

/* ここに書くことはたくさんありすぎます */

SPECIAL

0xa2a1 - 0xa2ae 0xa2ba - 0xa2c1 0xa2ca - 0xa2d0 0xa2dc - 0xa2ea

SPECIAL

0xa2f2 - 0xa2f9 0xa2fe

DIGIT

0xa3b0 - 0xa3b9

UPPER

0xa3c1 - 0xa3da

/* ローマ字 */

LOWER

0xa3e1 - 0xa3fa

/* ローマ字 */

MAPLOWER

< 0xa3c1 - 0xa3da : 0xa3e1 >

/* 英字 */

MAPLOWER

< 0xa3e1 - 0xa3fa : 0xa3e1 >

/* 英字 */

MAPUPPER

< 0xa3c1 - 0xa3da : 0xa3c1 >

MAPUPPER

< 0xa3e1 - 0xa3fa : 0xa3c1 >

XDIGIT

0xa3c1 - 0xa3c6 0xa3e1 - 0xa3e6

TODIGIT

< 0xa3b0 - 0xa3b9 : 0 >

TODIGIT

< 0xa3c1 - 0xa3c6 : 10 > < 0xa3e1 - 0xa3e6 : 10 >

PHONOGRAM

0xa4a1 - 0xa4f3

PHONOGRAM

0xa5a1 - 0xa5f6

UPPER

0xa6a1 - 0xa6b8

/* ギリシャ文字 */

LOWER

0xa6c1 - 0xa6d8

/* ギリシャ文字 */

MAPLOWER

< 0xa6a1 - 0xa6b8 : 0xa6c1 > < 0xa6c1 - 0xa6d8 : 0xa6c1 >

MAPUPPER

< 0xa6a1 - 0xa6b8 : 0xa6a1 > < 0xa6c1 - 0xa6d8 : 0xa6a1 >

UPPER

0xa7a1 - 0xa7c1

/* キリル文字 */

LOWER

0xa7d1 - 0xa7f1

/* キリル文字 */

MAPLOWER

< 0xa7a1 - 0xa7c1 : 0xa7d1 > < 0xa7d1 - 0xa7f1 : 0xa7d1 >

MAPUPPER

< 0xa7a1 - 0xa7c1 : 0xa7a1 > < 0xa7d1 - 0xa7f1 : 0xa7a1 >

SPECIAL

0xa8a1 - 0xa8c0

IDEOGRAM

0xb0a1 - 0xb0fe 0xb1a1 - 0xb1fe 0xb2a1 - 0xb2fe

IDEOGRAM

0xb3a1 - 0xb3fe 0xb4a1 - 0xb4fe 0xb5a1 - 0xb5fe

IDEOGRAM

0xb6a1 - 0xb6fe 0xb7a1 - 0xb7fe 0xb8a1 - 0xb8fe

IDEOGRAM

0xb9a1 - 0xb9fe 0xbaa1 - 0xbafe 0xbba1 - 0xbbfe

IDEOGRAM

0xbca1 - 0xbcfe 0xbda1 - 0xbdfe 0xbea1 - 0xbefe

IDEOGRAM

0xbfa1 - 0xbffe 0xc0a1 - 0xc0fe 0xc1a1 - 0xc1fe

IDEOGRAM

0xc2a1 - 0xc2fe 0xc3a1 - 0xc3fe 0xc4a1 - 0xc4fe

IDEOGRAM

0xc5a1 - 0xc5fe 0xc6a1 - 0xc6fe 0xc7a1 - 0xc7fe

IDEOGRAM

0xc8a1 - 0xc8fe 0xc9a1 - 0xc9fe 0xcaa1 - 0xcafe

IDEOGRAM

0xcba1 - 0xcbfe 0xcca1 - 0xccfe 0xcda1 - 0xcdfe

IDEOGRAM

0xcea1 - 0xcefe 0xcfa1 - 0xcfd3 0xd0a1 - 0xd0fe

IDEOGRAM

0xd1a1 - 0xd1fe 0xd2a1 - 0xd2fe 0xd3a1 - 0xd3fe

IDEOGRAM

0xd4a1 - 0xd4fe 0xd5a1 - 0xd5fe 0xd6a1 - 0xd6fe

IDEOGRAM

0xd7a1 - 0xd7fe 0xd8a1 - 0xd8fe 0xd9a1 - 0xd9fe

IDEOGRAM

0xdaa1 - 0xdafe 0xdba1 - 0xdbfe 0xdca1 - 0xdcfe

IDEOGRAM

0xdda1 - 0xddfe 0xdea1 - 0xdefe 0xdfa1 - 0xdffe

IDEOGRAM

0xe0a1 - 0xe0fe 0xe1a1 - 0xe1fe 0xe2a1 - 0xe2fe

IDEOGRAM

0xe3a1 - 0xe3fe 0xe4a1 - 0xe4fe 0xe5a1 - 0xe5fe

IDEOGRAM

0xe6a1 - 0xe6fe 0xe7a1 - 0xe7fe 0xe8a1 - 0xe8fe

IDEOGRAM

0xe9a1 - 0xe9fe 0xeaa1 - 0xeafe 0xeba1 - 0xebfe

IDEOGRAM

0xeca1 - 0xecfe 0xeda1 - 0xedfe 0xeea1 - 0xeefe

IDEOGRAM

0xefa1 - 0xeffe 0xf0a1 - 0xf0fe 0xf1a1 - 0xf1fe

IDEOGRAM

0xf2a1 - 0xf2fe 0xf3a1 - 0xf3fe 0xf4a1 - 0xf4a4

/*
* これは、コードセット 3 の半角かな用です。
*/

SPECIAL

0xa1 - 0xdf

PHONOGRAM

0xa1 - 0xdf

CONTROL

0x84 - 0x97 0x9b - 0x9f 0xe0 - 0xfe

関連項目

mklocale(1), setlocale(3)

FreeBSD 10.0 June 4, 1993 FreeBSD 10.0

スポンサーリンク