EUC

Section: Devices and Network Interfaces (4)
索引 jman

BSD mandoc
 

索引

名称

euc - EUC エンコーディング  

索引

書式

ENCODING Qq 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)


 

索引

Index

名称
書式
説明
例 - 日本語ロケール
関連項目

jman



Time: 07:07:21 GMT, January 12, 2009