日本語環境ユーザーズガイド

第 3 章 符合化文字集合 (文字コード)

この章では、日本語環境で使用される文字コードについて説明します。

日本語 EUC

日本語 EUC は、EUC (Extended UNIX Code : 拡張 UNIX コード) に、日本語文字集合を割り当てた文字集合およびエンコーディングを提供します。これは、ja または ja_JP.eucJP ロケールで日本語を表現する文字コード体系として使われています。日本語 EUC に関する詳細は、eucJP(5) マニュアルページを参照してください。

PC 漢字コード

PC 漢字コード (以降、PCK とします) は、一般に「シフト JIS (あるいは MS 漢字) コード」と呼ばれ、Microsoft が Windows 3.1 で規定したマイクロソフト標準キャラクタセットと同等の文字集合およびエンコーディングを提供するものです。ja_JP.PCK ロケールで日本語を表現する文字コード体系として使われています。PCK に関する詳細は、PCK(5) マニュアルページを参照してください。

UTF-8

UTF-8 は、Unicode のエンコーディングの1つであり、ASCII 部分 (0x00-0x7F) に関しては EUC または PCK と互換性を保ったまま、UTF-16 や UTF-32 の文字を使えるようにしたエンコーディングです。ja_JP.UTF-8 ロケールで文字を表現する文字コード体系として使われています。

Solaris オペレーティングシステムの提供する UTF-8 は Unicode Consortium の Unicode 4.0 に基づきます。 ユーザー定義文字領域は、Unicode 4.0 で Private Use area に割り当てられている領域で、日本語 EUC や PCK で表現 できるすべての文字(ベンダー定義文字も含む)や JIS X 0213:2004 に対応した文字も Unicode 4.0 の中に含まれています。Unicode 4.0 に関する詳細は、 http://www.unicode.org を参照してください。


注 –

Solaris オペレーティングシステム上の制限で、Unicode 4.0で定義されたすべての文字が表示、印刷、入力できるわけではありません。


iconv による変換

現在、日本語を表現する文字コードには、eucJP、PCK のほかに、ISO-2022-JP、UTF-8 などがあります。

Sun のネットワーク機能を使って他のマシンからファイルをコピーする場合や、他のマシンへファイルを転送する場合、日本語文字コードが違うと、そのままでは文字化けを起こして使用できません。このような場合は、コード変換フィルタを使用します。コード変換フィルタとは、異なる日本語文字コード間で、ファイル中の漢字コードを変換するフィルタのことです。たとえば日本語 EUC から ISO-2022-JP への変換や、その逆の変換を行うフィルタがあります。

Solaris オペレーティングシステムでは、『X/Open Portability Guide Issue 5 (XPG5)』の規定に準拠した iconv コマンドがサポートされています。iconv は、次のような書式で使用します。


sun% iconv -f <変換元文字コード> -t <変換先文字コード> [filename...]

Solaris オペレーティングシステムでは、この iconv に対応した文字コード用の変換モジュールを提供しています。iconv コマンドについては、iconv(1) および iconv_ja(5) のマニュアルページを参照してください。

端末用の変換

Solaris オペレーティングシステムは、端末ベースの入出力に対して、日本語の処理機能を提供しています。その中でも、setterm には、種類の異なる端末間にインタフェースを提供する機能があります。setterm を使って端末を設定すると、扱う文字コード (ロケールにより設定される) と端末の文字コードの違いをコード変換によって吸収できます。また STREAMS 内部で日本語文字コードが正しく処理されるように設定できます。

たとえば、ja または ja_JP.eucJP ロケールで PCK 漢字端末が接続されている場合、入力は日本語 EUC に変換され、端末への出力は PCK に変換されます。

漢字端末を設定する setterm コマンドは、次のような書式で使用します。


sun% setterm [ -x name ] [-t]

現在のロケールの文字コードと端末の文字コードが同じであれば、setterm(1) を 使用しないで端末の設定を行うことができます。


sun % stty deteucw

詳細は、setterm(1) のマニュアルページを参照してください。

文字コード変換規則

ここでは、日本語 EUC、PCK、UTF-8 間の文字コード変換規則について説明します。

ここで説明する変換規則に従うインタフェースは次のものです。

変換規則の概要

ベンダー定義文字、ユーザー定義文字についての変換規則の概要は次のようになります。

図 3–1 文字コード変換規則

ベンダー定義文字、ユーザー定義文字についての文字コード変換規則を表示しています。

日本語 EUC と PC 漢字コード間の変換規則

日本語 EUC と PCK の文字コード変換規則は『TOG 日本ベンダ協議会』の日本語 EUC・シフト JIS コード変換仕様』に基づいています。変換規則の概要は、図 3–1 を参照してください。

  1. JIS X 0201 で規定されている英数字、記号

    変換先でも変換元と同じコードになります。

  2. JIS X 0201 で規定されているカタカナ、記号

    変換先でも変換元と同じコードになります。ただし、日本語EUC 側ではEUCコードセット2を示す SS2 (0x8e) が先頭に付加されます。

  3. JIS X 0208 で規定されている文字

    それぞれのコードセットで割り当てられている JIS X 0208 の同じ区、点用のコードポイントの間で変換します。

  4. JIS X 0212 で規定されている文字

    PCK で IBM 拡張文字として定義されている文字の場合は、次の項目を参照してください。その他の文字については対応する文字がないため、置換文字に変換します。置換文字は「〓」(名称: GETA MARK、PCK の値: 0x819C)

  5. ベンダー定義文字

    1. 特殊記号 (13 区記号)

      付録 A ベンダー定義文字の変換を参照してください。

    2. IBM 拡張文字

      JIS X 0208 または JIS X 0212 で同じ文字が規定されている場合はその文字との間で変換します。どちらにも規定されていない場合は、JIS X 0212 の 83 区、84 区の領域を使って変換します。具体的なコードの対応は、付録 B フォントの移行 を参照してください。

    3. NEC 選定 IBM 拡張文字

      PCK から日本語 EUC への変換では、PCK で一度 IBM 拡張文字に変換してから日本語 EUC に変換します。日本語 EUC から PCK への変換では、IBM 拡張文字から NEC 選定 IBM 拡張へは変換されません。

  6. ユーザー定義文字

    以下の領域を使って変換し、区番号、点番号の小さいほうから順にコードを割り当てるものとします。

 

PCK 

日本語 EUC 

ユーザー定義文字 

1880 文字 

0xf040 - 0xf4fc 

0xf540 - 0xf9fc 

0xf5a1 - 0xfefe 

0x8ff5a1 - 0x8ffefe 

日本語 EUC と UTF-8 間の変換規則

(1) JIS X 0201 で規定されている文字

JIS X 0201:1997 で規定されている文字の名称と、Unicode で規定されている文字の名称との間で対応をとります。

例 :「A」の場合

表 3–1 変換規則

日本語 EUC 

JIS 名称 

Unicode 

Unicode 名称 

UTF-8 

0x41 

LATIN CAPITAL LETTER A 

U+0041 

LATIN CAPITAL LETTER A 

0x41 

ただし、JIS X 0208 と同時に使用する関係上 JIS X 0208:1997 附属書 5 表 1 で代替名称が規定されている文字についてはその代替名称をもとに変換します。

例 :「ア」の場合

表 3–2 変換規則

日本語 EUC 

JIS 名称 

JIS 代替名称 

Unicode 

Unicode 名称 

UTF-8 

0x8eb2 

KATAKANA LETTER A 

HALFWIDTH KATAKANA LETTER A 

U+FF71 

HALFWIDTH KATAKANA LETTER A 

0xefbdb1 

例外として、以下の 2 文字は文字の名称に関係なく同じコードを持つ文字に変換します。

表 3–3 変換規則

日本語 EUC 

JIS 名称 

Unicode 

Unicode 名称 

UTF-8 

0x5c 

YEN SIGN 

U+005c 

REVERSE SOLIDUS 

0x5c 

0x7f 

OVER LINE 

U+007f 

TILDE 

0x7f 

(2) JIS X 0208 で規定されている文字

JIS X 0208:1997 で規定されている文字の名称と、Unicode で規定されている文字の名称との間で対応をとります。

例 :「亜」の場合

表 3–4 変換規則

日本語 EUC 

JIS 区点 

JIS 名称 

Unicode 

Unicode 名称 

UTF-8 

0xb0a1 

16 区 1 点 

CJK UNIFIED IDEOGRAPH-4E9C 

U+4E9C 

CJK UNIFIED IDEOGRAPH-4E9C 

0xe4ba9c 

ただし、JIS X 0201 と同時に使用する関係上 JIS X 0208:1997 附属書 5 表 2 で代替名称が規定されている文字についてはその代替名称をもとに変換します。

例 :「A」の場合

表 3–5 変換規則

日本語 EUC 

JIS 区点 

JIS 名称 

JIS 代替名称 

Unicode 

Unicode 名称 

UTF-8 

0xa3c1 

3 区 33 点 

LATIN CAPITAL LETTER A 

FULLWIDTH LATIN CAPITAL LETTER A 

U+FF21 

FULLWIDTH LATIN CAPITAL LETTER A 

0xefbca1 

(3) JIS X 0212 で規定されている文字

特殊文字 (附属書 1 で規定されている文字) およびアルファベット (附属書 2 で規定されている文字) については、JIS X 0221:1995 の附属書 3 表 4 に基づき変換します。

例 :  

トノスアクセント付きの A を表示しています。

(トノスアクセント付きA) の場合 

表 3–6 変換規則

日本語 EUC 

JIS 区点 

JIS 名称 

Unicode 

Unicode 名称 

UTF-8 

0x8fa6e1 

6 区 65 点 

トノスアクセント付き大文字A (JIS X 0221 附属書3表4 での名称) 

U+0386 

GREEK CAPITAL LETTER A WITH TONOS 

0xe08e86 

例外として、以下の 1 文字は以下のように変換します。

表 3–7 変換規則

日本語 EUC 

JIS 区点 

JIS 名称 

Unicode 

Unicode 名称 

UTF-8 

0x8fa2b7 

2 区 23 点 

TILDE 

U+FF5E 

FULLWIDTH TILDE 

0xefbd9e 

漢字 (附属書 3 で規定されている文字) の中で、JIS X 0221:1995 の附属書 1 表 3 で規定されているものは、その名称をもとに、Unicode で同じ名称で規定されている文字に変換します。

例 :  

JIS X 0221:1995 の附属書 1 表 3 で規定されている文字を表示しています。

の場合 

表 3–8 変換規則

日本語 EUC 

JIS 区点 

JIS 名称 

Unicode 

Unicode 名称 

UTF-8 

0x8fb0a6 

16 区 6 点 

CJK UNIFIED IDEOGRAPH-4E1F 

U+4E1F 

CJK UNIFIED IDEOGRAPH-4E1F 

0xe4b89f 

JIS X 0221:1995 の附属書 1 表 3 で規定されていない文字は、Unicode データベースに記述されている JIS との対応情報にもとづき変換します。

例 :  

JIS X 0221:1995 の附属書 1 表 3 で規定されていない文字を表示しています。

の場合 

表 3–9 変換規則

日本語 EUC 

JIS 区点 

Unicode 

Unicode 名称 

UTF-8 

0x8fb0a1 

16 区 1 点 

U+4E02 

CJK UNIFIED IDEOGRAPH-4E02 

0xe4b882 

(4) ベンダー定義文字

特殊記号 (13 区記号) - 付録 A ベンダー定義文字の変換 を参照してください。

IBM 拡張文字 - 付録 A ベンダー定義文字の変換 を参照してください。

(5) ユーザー定義文字

Unicode 基本複数言語面 (BMP) の私用領域 (PUA) の先頭 (U+E000) から 1880 文字分を使用して以下のように対応させます。対応する領域の概念については、図 3–1 を参照してください。

表 3–10 変換規則

日本語 EUC 

Unicode 

UTF-8 

0xf5a1 ~ 0xf5fe 

U+E000 ~ U+E05D 

0xee8080 ~ 0xee819d 

0xf6a1 ~ 0xf6fe 

U+E05E ~ U+E0BB 

0xee819e ~ 0xee82bb 

... 

   

0xfea1 ~ 0xfefe 

U+E34E ~ U+E3AB 

0xee8d8e ~ 0xee8eab 

     

0x8ff5a1 ~ 0x8ff5fe 

U+E3AC ~ U+E409 

0xee8eac ~ 0xee9089 

0x8ff6a1 ~ 0x8ff6fe 

U+E40A ~ U+E467 

0xee908a ~ 0xee91a7 

... 

   

0x8ffea1 ~ 0x8ffefe 

U+E6FA ~ U+E757 

0xee9bba ~ 0xee9d97 

UTF-8 で使用できる 6400 文字のユーザー定義文字のうち、下記の文字については日本語 EUC 側に対応する領域がないため、置換文字に変換します。

Unicode : U+E758 ~ U+F8FF

UTF-8 : 0xee9d98 ~ 0xeea3bf

置換文字は「?」 (名称 : QUESTION MARK、日本語 EUC の値 : 0x3f) を使用します。

PC 漢字コードと UTF-8 間の変換規則

PC 漢字コードと UTF-8 の変換は、内部で一旦変換元のコードセットから日本語 EUC に変換し、そこから目的のコードセットへ変換します。

PC 漢字コードと日本語 EUC との間の変換、日本語 EUC と UTF-8 との間の変換についての記述を参照してください。