• 検索結果がありません。

(Freelance Graphics - MS\225\317\212\267\221\316\211\236_new.PRZ)

N/A
N/A
Protected

Academic year: 2021

シェア "(Freelance Graphics - MS\225\317\212\267\221\316\211\236_new.PRZ)"

Copied!
11
0
0

読み込み中.... (全文を見る)

全文

(1)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

 

 

 

 Microsoft

Microsoft

Microsoft

Microsoftの

のUnicode

Unicode

Unicode

Unicode変換

変換

変換

変換と

IBM

IBM

IBM

IBMの

のUnicode

Unicode

Unicode

Unicode変換

変換の

変換

変換

のルール

ルール

ルールの

ルール

違いによる

いによる

いによる問題

いによる

問題

問題

問題と

とDB

DB2

DB

DB

22

2での

での

での

での対応

対応

対応

対応

1

問題

問題

問題

問題

DB2 UDBをアクセスするWindows環境でのJavaアプリケーションでは、

以下のような問題が起こる場合がある

文字化け ← 後述の「問題①」  データはあるのに、検索条件に合致しない ← 後述の「問題②」  同じ文字が異なるコード・ポイントでデータベースに保管されることによる問題 

原因

Javaアプリケーションの場合、アプリケーション実行環境がSJIS環境でも、アプリケーション・ データは内部的にUnicodeに変換される Unicodeへの変換はJVMが行うが、Windows環境においてはこの変換はMicrosoftのSJIS⇔ Unicodeの変換ルールが適用される MicrosoftのSJIS⇔Unicode変換ルールと、IBMのSJIS⇔Unicode変換ルールでは若干異なる 点があるため、文字によって上記のような問題が発生する これら問題はJavaアプリケーションだけでなく、ODBC V3.51のUnicode対応のAPIを使用した アプリケーションでも、同様の現象が発生

(2)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

問題

問題

問題

問題 

 

 ①

 

①:

::

:文字化

文字化けの

文字化

文字化

けの

けの

けのケース

ケース

ケース

ケース

問題となる文字:―、~、∥、-、¦

― (ダッシュ)、~(波ダッシュ)、∥(双柱)、- (マイナス記号)、¦(破断線)

これらの文字はUnicodeの中でも、非常によく似た字体のものが存在

以下はそれらを表にしたもの

http://www.unicode.org にて参照可能な"CODE Chart"より転載

B R O K E N B A R ( S y n g le B y te ) U + 0 0 A 6 F U L L W I D T H B R O K E N B A R U + F F E 4 M I N U S S I G N U + 2 2 1 2 F U L L W I D T H H Y P H E N -M I N U S U + F F 0 D D O U B L E V E R T I C A L L I N E U + 2 0 1 6 P A R A L L E L T O U + 2 2 2 5 W A V E D A S H U + 3 0 1 C F U L L W I D T H T I L D E U + F F 5 E E M D A S H U + 2 0 1 4 H O R I Z O N T A L B A R U + 2 0 1 5 B R O K E N B A R ( S y n g le B y te ) U + 0 0 A 6 F U L L W I D T H B R O K E N B A R U + F F E 4 M I N U S S I G N U + 2 2 1 2 F U L L W I D T H H Y P H E N -M I N U S U + F F 0 D D O U B L E V E R T I C A L L I N E U + 2 0 1 6 P A R A L L E L T O U + 2 2 2 5 W A V E D A S H U + 3 0 1 C F U L L W I D T H T I L D E U + F F 5 E E M D A S H U + 2 0 1 4 H O R I Z O N T A L B A R U + 2 0 1 5 3

問題

問題

問題

問題 

 

 

 ①

①:

::

:文字化

文字化けの

文字化

文字化

けの

けの

けのケース

ケース

ケース ...

ケース

...

...

...

IBMとMicrosoftのSJIS⇔Unicode変換ルールの違い

IBM:JIS準拠で決定 Microsoft:独自のルールを採用 IBM IBMIBM IBM変換変換変換変換 MSMSMSMS変換変換変換変換 ダッシュ U+2015 ―――― 0x815C ― ― ― ― 0x815C U+2014 ? 0x3F 波ダッシュ U+FF5E ~~~~ 0x8160 ~ ~ ~ ~ 0x8160 U+301C ? 0x3F 双柱 U+2225 ∥∥∥∥ 0x8061 ∥ ∥ ∥ ∥ 0x8061 U+2016 ? 0x3F マイナス記号 U+FF0D ---- 0x817C - - - - 0x817C U+2212 ? 0x3F 破断線 U+FFE4 ¦¦¦¦ 0xFA55 ¦ ¦ ¦ ¦ 0xFA55 ¦¦¦¦ 0xEEFA ¦ ¦ ¦ ¦ 0xEEFA U+00A6  ¦ 0x7C (半角) それぞれの変換ルールで優先している組み合わせ IBM変換ルールで1方向のみ対応している組み合わせ MS変換ルールで定義されていない組み合わせ IBM変換ルールで全角文字を半角文字に変換 MS変換で1方向のみ対応している組み合わせ Unicode(UCS-2)からIBM-943に変換 する場合、IBM変換では2つの異なる コード・ポイント(例えば全角ダッシュ に対応するU+2014とU+2015)のもの も、1つのIBM-943の全角ダッシュの コード・ポイント0x815Cに変換できる ように対応 しかし、MS変換は1対1対応になって いるため、IBMが優先している U+2014を0x815Cに変換することがで きない このため、Windows環境でJava アプリケーションを使用してDB2 のデータベースにアクセスする 場合、次に紹介するように検索検索検索検索 時 時 時 時にににに問題問題問題が発生問題

(3)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

問題

問題

問題

問題 

 

 

 ①

①:

::

:文字化

文字化けの

文字化

文字化

けの

けの

けのケース

ケース

ケース ...

ケース

...

...

...

全角ダッシュをJavaアプリケーションでIBM-943のデータベースに

INSERT

この場合はIBM変換がU+2015から0x815Cへの変換も対応しているため問題問題問題問題はないはないはないはない Javaアプリケーション IBM-943 ― ― ― ―   ダッシュ ダッシュダッシュダッシュ 0 00 0x815Cx815Cx815Cx815C Unicode UnicodeUnicode Unicode U+2015 U+2015 U+2015 U+2015 ― ― ― ―    ダッシュダッシュダッシュダッシュ 0 00 0x815Cx815Cx815Cx815C JVM

MS変換

IBM変換

JDBC DB2 UDB データベース・サーバー IBM-943 ( (( (MSMSMSMS優先優先優先優先のののコードのコードコード)コード)))

Javaアプリアプリアプリをアプリををを使用使用使用使用してして、してして、、‘、‘‘‘――――’’(’’(全角((全角全角ダッシュ全角ダッシュダッシュダッシュ))))ををIBM-943のをを のののデータベースデータベースデータベースデータベースににににINSERT

5

問題

問題

問題

問題 

 

 

 ①

①:

::

:文字化

文字化けの

文字化

文字化

けの

けの

けのケース

ケース

ケース ...

ケース

...

...

...

全角ダッシュをJavaアプリケーションでIBM-943のデータベースから

検索

MS変換ではU+2014から0x815Cへの変換に対応していないため、文字化文字化文字化文字化けがけがけが発生けが発生発生発生 Javaアプリケーション IBM-943 ― ― ― ―    ダッシュダッシュダッシュダッシュ 0 00 0x815Cx815Cx815Cx815C Unicode Unicode Unicode Unicode U+2014 U+2014 U+2014 U+2014 SJIS SJIS SJIS SJIS ???? 0x3F 0x3F 0x3F 0x3F JVM

MS変換

IBM変換

JDBC DB2 UDB データベース・サーバー IBM-943 Javaアプリをアプリアプリアプリををを使用使用使用使用してして、してして、、IBM-943の、 のののデータベースデータベースデータベースデータベースからから‘からから‘‘‘――――’’’’((((全角全角ダッシュ全角全角ダッシュダッシュダッシュ))))をををを検索検索検索検索 ( ((

(4)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

問題

問題

問題

問題 

 

 

 ②

②:

::

同じ

じ文字

文字

文字

文字が

が異

異なる

なる

なる

なるコード

コード

コード

コード・

・・

・ポイント

ポイントで

ポイント

ポイント

で保管

保管

保管

保管される

される

される

されるケース

ケース

ケース

ケース

問題となる文字:ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ№℡㈱

IBM-943のコード・ページの中の2つのコード・ポイントをもつ文字に関連する問題

これらの文字はSJISからUnicodeに変換される場合は同じ1つのコー

ド・ポイントになるが、UnicodeからSJISに変換される場合は、1つのも

のを2つのものに変換することはできないため、IBM変換とMS変換では

どちらのコード・ポイントを優先するかが異なっている

例 ㈱の場合 ㈱はIBM-943またはMS932のコード・ページでは0x878A(NEC選定文字)と0xFA58(IBM選定文字)の2つがある これらがUnicodeに変換される場合は、IBM変換でもMS変換でも同じU+3231に変換される その逆の場合は2つのコード・ポイントのうちどちらに変換するかが異なり、IBM変換の場合は0xFA58に、またMS変 換の場合は0x878Aに変換される UCS- 2 UCS- 2 UCS- 2

UCS- 2 IB M- 9 43IB M- 9 43IB M- 9 43IB M- 9 43 UCS- 2UCS- 2UCS- 2UCS- 2 IBM IBM IBM IBM変換変換 (変換変換 ((( MSMSMSMS9 3 29 3 2 )))) MS9 3 29 3 2 MSMSMS変換変換変換変換 0x878A ㈱ ㈱ ㈱ ㈱ U+3231 ㈱㈱㈱㈱ ㈱㈱㈱㈱ U+3231 0xFA58 それぞれの変換ルールで優先している組み合わせ UCS-2への変換のみ対応している組み合わせ 通常Windows環境で㈱を入力 すると、NEC選定文字の方の 0x878Aのコード・ポイントの㈱ が優先されて使用されるため、 次のような問題が発生 7

問題

問題

問題

問題 

 ②

 

 

②:

::

同じ

じ文字

文字

文字が

文字

が異

異なる

なるコード

なる

なる

コード

コード・

コード

・・

・ポイント

ポイント

ポイントで

ポイント

で保管

保管される

保管

保管

される

される

されるケース

ケース

ケース ...

ケース

...

...

...

Windows環境(DB2CODEPAGEは943)のアプリケーションからIBM-943

のデータベースに接続して㈱という文字をINSERTするケース

A. DB2 CLP(コマンド・ライン・プロセッサ)の場合 

途中でUnicodeへの変換が発生しない この場合以下のように0x878Aの㈱はそのまま0x878Aでデータベースに保管される CLPなど IBM-943 ㈱ ㈱㈱ ㈱ 0 00 0x878Ax878Ax878Ax878A

㈱  ㈱  ㈱  ㈱  0 00 0x878Ax878Ax878Ax878A

DB2 UDB データベース・サーバー IBM-943 CLPなど、などなどなど、、、JDBC/ODBCをを介をを介介さない介さないさないさないアプリケーションアプリケーションアプリケーションをアプリケーションを使用をを使用使用使用してしてしてして㈱㈱を㈱㈱ををINSERTしたを したした場合した場合場合場合 Windows環境環境で環境環境ででで㈱㈱㈱を㈱を入力をを入力入力入力するとするとするとすると、、、、0x878Aののコードののコードコード・コード・・・ポイントポイントポイントポイントのののの㈱㈱が㈱㈱ががが優先優先優先優先されるされるされるされる この この この この場合場合場合は場合はははコードコードコードコード変換変換が変換変換がが発生が発生発生発生しないのでしないので、しないのでしないので、、、 0x878Aのままのままのままのままデータベースデータベースにデータベースデータベースににに保管保管保管保管されるされるされるされる

(5)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

問題

問題

問題

問題 

 ②

 

 

②:

::

同じ

じ文字

文字

文字が

文字

が異

異なる

なるコード

なる

なる

コード

コード・

コード

・・

・ポイント

ポイント

ポイント

ポイントで

で保管

保管される

保管

保管

される

される

されるケース

ケース

ケース ...

ケース

...

...

...

B. Javaアプリケーションの場合

この場合は途中でUnicodeに変換される UnicodeからIBM-943への変換の時はIBM変換のルールに従い、IBM選定文字の方の0xFA58 のコード・ポイントの㈱になる Javaアプリケーション IBM-943 ㈱ ㈱ ㈱ ㈱ 0 00

0xFAxFAxFA58xFA585858 Unicode UnicodeUnicode Unicode U+3231 U+3231 U+3231 U+3231 ㈱  ㈱  ㈱  ㈱  0 00 0x878Ax878Ax878Ax878A

JVM

MS変換

IBM変換

JDBC DB2 UDB データベース・サーバー IBM-943 ( ((

(IBMIBMIBM優先IBM優先優先優先ののののコードコードコード)コード)))

Javaアプリケーションアプリケーションアプリケーションアプリケーションををを使用を使用使用使用してして㈱してして㈱㈱㈱ををををINSERTしたしたしたした場合場合場合場合

Windows環境環境環境環境でででで㈱㈱㈱㈱をを入力をを入力入力入力するとするとするとすると、、、、0x878Aののコードののコードコード・コード・・・ポイントポイントポイントポイントのののの㈱㈱が㈱㈱ががが優先優先優先優先されるされるされるされる

この このこの

この場合場合場合は場合ははは途中途中途中途中ででUnicodeにでで ににに変換変換変換変換されされされ、され、さらに、、さらにさらにさらにUnicodeからからからからIBM-943へのへのへのへの変換変換が変換変換がが発生が発生発生発生しししし、、、、

0xFA58ののコードののコードコードコード・・・・ポイントポイントポイントポイントのの㈱のの㈱㈱㈱としてとしてとしてとして保管保管保管保管されるされるされるされる 9

現象のまとめ

アプリケーションのコード・ページとデータベースのコード・ページが一致している場合、通常は コード変換が発生しないので、入力された文字はそのままのコードポイントでデータベースに 保管されると思われるが、JDBCを介したことにより異なるコード・ポイントで保管されてしまう という現象が発生する そのため㈱という文字はINSERTしたアプリケーションの違いで、データベース内では、2つの コード・ポイントのものが存在するという現象が発生する このような2つのコード・ポイントのものが混在する状況ではさらに、同じ㈱という文字をもつ データの中に検索条件に合致するものとしないものが発生することになる

問題

問題

問題

問題 

 ②

 

 

②:

::

同じ

じ文字

文字

文字

文字が

が異

異なる

なるコード

なる

なる

コード・

コード

コード

・・

・ポイント

ポイント

ポイント

ポイントで

で保管

保管される

保管

保管

される

される

されるケース

ケース

ケース

ケース ...

...

...

...

(6)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

問題

問題

問題

問題 

 ②

 

 

②:

::

同じ

じ文字

文字

文字が

文字

が異

異なる

なるコード

なる

なる

コード

コード・

コード

・・

・ポイント

ポイント

ポイントで

ポイント

で保管

保管される

保管

保管

される

される

されるケース

ケース

ケース ...

ケース

...

...

...

㈱が2つのコードポイントで保管されているデータベースに対して 

COL1=’㈱’という条件で検索

A. DB2 CLP(コマンド・ライン・プロセッサ)の場合

JDBCを介して保管された㈱の方は、検索結果として返されない  CLPなど IBM-943 ㈱ ㈱ ㈱ ㈱ 0 00 0x878Ax878Ax878Ax878A

0xFA58 0xFA580xFA58 0xFA58

SELECT * from TAB1 SELECT * from TAB1 SELECT * from TAB1 SELECT * from TAB1

where COL1 = where COL1 =where COL1 = where COL1 =‘ ㈱㈱㈱㈱’ (0x878A) (0x878A) (0x878A) (0x878A) DB2 UDB データベース・サーバー IBM-943 CLPなど、などなどなど、、JDBC/ODBCを、 をを介を介さない介介さないさないアプリケーションさないアプリケーションアプリケーションをアプリケーションををを使用使用使用し使用し、㈱しし、㈱、㈱、㈱ををを検索条件を検索条件検索条件検索条件にに指定にに指定指定指定してしてしてしてSELECTしたしたした場合した場合場合場合 Windows環境環境環境環境でで㈱㈱をを入力入力入力入力するとするとするとすると、、0x878Aののコードコード・コードコード・・・ポイントポイントポイントポイントのの㈱㈱がが優先優先優先優先されるされるされるされる この この この この場合場合は場合場合はははコードコードコード変換コード変換が変換変換がが発生が発生発生しないので発生しないのでしないのでしないので、、検索条件、、検索条件検索条件の検索条件のの㈱の㈱㈱㈱はは 0x878Aとしてはは としてとしてとして比較比較比較比較されるされるされるされる 条件に合致しない COL1 = COL1 = COL1 =

COL1 =    0x878A0x878A0x878A0x878A

11

問題

問題

問題

問題 

 ②

 

 

②:

::

同じ

じ文字

文字

文字が

文字

が異

異なる

なるコード

なる

なる

コード

コード・

コード

・・

・ポイント

ポイント

ポイントで

ポイント

で保管

保管される

保管

保管

される

される

されるケース

ケース

ケース ...

ケース

...

...

...

B. Javaアプリケーションの場合

CLPを介して保管された㈱の方は、検索結果として返されない  ㈱ ㈱ ㈱ ㈱ 0 00 0x878Ax878Ax878Ax878A

0xFA58 0xFA580xFA58 0xFA58 Javaアプリケーション IBM-943 Unicode Unicode Unicode Unicode U+3231 U+3231 U+3231 U+3231 MS変換 IBM変換 DB2 UDB データベース・サーバー IBM-943 Javaアプリケーションアプリケーションアプリケーションをアプリケーションををを使用使用し使用使用ししし、㈱、㈱、㈱、㈱をを検索条件をを検索条件検索条件検索条件にににに指定指定して指定指定してしてSELECTしたして したした場合した場合場合場合 Windows環境環境環境環境でででで㈱㈱㈱㈱をを入力をを入力入力すると入力するとすると、すると、、、0x878Aののコードののコードコード・コード・・・ポイントポイントポイントポイントのののの㈱㈱が㈱㈱ががが優先優先優先優先されるされるされるされる この このこの

この場合場合場合場合はははは途中途中途中で途中でUnicodeにでで にに変換に変換変換され変換されされされ、、さらに、、さらにさらにさらにUnicodeからからからからIBM-943へのへのへの変換への変換が変換変換ががが発生発生発生発生ししし、し、、、 検索条件

検索条件 検索条件

検索条件ののの㈱の㈱㈱は㈱は 0xFA58としてはは としてとして比較として比較比較比較されるされるされるされる

条件に合致しない SELECT * from TAB1

SELECT * from TAB1 SELECT * from TAB1 SELECT * from TAB1

where COL1 = where COL1 = where COL1 = where COL1 =‘ ㈱㈱’㈱ (0x878A) (0x878A) (0x878A) (0x878A) COL1 = COL1 = COL1 =

(7)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

SJIS⇔Unicode

SJIS⇔Unicode

SJIS⇔Unicode

SJIS⇔Unicode変換

変換

変換

変換での

での

での2

での

2つの

つの

つの問題

つの

問題

問題に

問題

に対

対する

する

する

するDB

DB2

DB

DB

22

2での

での

での

での対応

対応

対応

対応

MicrosoftとIBMのSJIS⇔Unicode変換のルールの違いにより、2つの問

題が潜在

IBMではこれらの問題に対応するため、新しくMS対応の変換表を提供

V7ではFixpak9で、V8ではFixpak2で提供 提供される変換表のファイル名

V7: 0941ucs2.cnv 0943ucs2.cnv ucs20941.cnv ucs20943.cnv V8: 0943ucs2.cnv ucs20943.cnv 提供されているファイルの種類が異なるのは、V8では0943ucs2.cnvに0941ucs2.cnvの変換部分も含まれるようになっため、 ucs20943.cnvとucs20941.cnvも同じ

提供方法と使用方法

DB2 UDBが使用するコード変換用の表は、ファイルとしてDB2の導入ディレクトリーの /SQLLIB/CONVディレクトリーに存在 V7のFixpak9、またV8のFixpak2ではその下にMSというサブディレクトリーが作成され、新しい 変換表はこのサブディレクトリーに存在する これを使用する場合は、/SQLLIB/CONVディレクトリー直下の既存の同じ名前の変換表と入 れ替える 念のため既存のファイルはRENAMEするか、別の場所にバックアップ・コピーを作成しておくこと ファイルを置き換えたあと、DB2を再スタート なお、この新しい変換表の使用に関しては、飽くまでも利用者の責任において使用すること 13

解説

解説

解説

解説:

::

この変換表は、これらの問題に関してその対応への要望が多いため、IBM-943クライアントとIBM-943のデータベースの接続とい う限られた環境での使用に対して、ローカルの対応策としてお客様の責任下でご使用いただくために提供されたもの。 あくまでもIBMでは今までの方針を変えず、Windows環境でどうしてもMSに対応したテーブルを使用しなければならず、また既存 のデータをすべて新しいテーブルを利用して移行し、既存の変換テーブルの影響を受けない環境下を作成できるということが保証 できる場合のみ、この新しい変換表を適応していただくという考え方をとっているということ、またどのような影響、変更があるのか ということを充分理解の上使用すること。 変換表の変更にあたっては、影響範囲を充分調査の上、適用すべきサーバーとクライアントは全て同じ変換表を使用するように 徹底すること なお、JDBCアプリケーションの場合は、IBM製のJDKであればJVMで使用する変換表をMS932ではなくCp943Cに変更することに より、MSのコードではなくIBMのコードに統一することも可能であるの、こちらの方法も要検討。

(8)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

従来

従来

従来

従来(

((

(IBM

IBM

IBM

IBMルール

ルール

ルール)

ルール

)の

))

の変換表

変換表

変換表と

変換表

とMS

MS対応

MS

MS

対応

対応

対応の

の変換表

変換表の

変換表

変換表

の違

違い

従来 従来 従来

従来ののののIBMIBMIBMIBMルールルールルールのルールののの変換変換変換変換 IBM-943 IBM-943 IBM-943 IBM-943 U CS-2U CS-2U CS-2U CS-2 0x8754 0xFA4A 0x8755 0xFA48 0x8756 0xFA4C 0x8757 0xFA4D 0x8758 0xFA4E 0x8759 0xFA4F 0x875A 0xFA50 0x875B 0xFA51 0x875C 0xFA52 0x875D 0xFA53 0x8782 0xFA59 0x8784 0xFA5A 0x878A 0xFA58 U+2015 ― U+2014 — U+FF5E ~ U+301C ? U+2225 ∥ U+2016 ∥ U+FF0D - U+2212 ? U+FFE4 ¦ U+00A6 ¦ 0xEEFA U+2160 U+2161 U+2162 U+2163 U+2164 U+2165 U+2166 U+2167 U+2168 U+2169 U+2116 U+2121 U+3231 0x815C 0x8160 0x8161 0x817C 0xFA55 Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ № ℡ ㈱ Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ Ⅹ № ℡ ㈱ ― ― ― ― ~ ~ ~ ~ ∥ ∥ ∥ ∥ - - - - ¦ ¦ ¦ ¦ 新 新新

新しいしいしいしいMSMSMSMS対応対応の対応対応のののIBMIBMIBMIBM変換変換変換変換 IBM-943 IBM-943 IBM-943 IBM-943 U CS-2U CS-2U CS-2U CS-2 0x8754 0xFA4A 0x8755 0xFA48 0x8756 0xFA4C 0x8757 0xFA4D 0x8758 0xFA4E 0x8759 0xFA4F 0x875A 0xFA50 0x875B 0xFA51 0x875C 0xFA52 0x875D 0xFA53 0x8782 0xFA59 0x8784 0xFA5A 0x878A 0xFA58 U+2015 ― U+2014 — U+FF5E ~ U+301C ? U+2225 ∥ U+2016 ∥ U+FF0D - U+2212 ? U+FFE4 ¦ U+00A6 ¦ 0xEEFA Ⅰ U+2160 Ⅰ Ⅱ U+2161 Ⅱ Ⅲ U+2162 Ⅲ Ⅳ U+2163 Ⅳ Ⅴ U+2164 Ⅴ Ⅵ U+2165 Ⅵ Ⅶ U+2166 Ⅶ Ⅷ U+2167 Ⅷ Ⅸ U+2168 Ⅸ Ⅹ U+2169 Ⅹ № U+2116 № ℡ U+2121 ℡ ㈱ U+3231 ㈱ ― ― ― ― 0x815C ~ ~ ~ ~ 0x8160 ¦ ¦ ¦ ¦ 0xFA55 ∥ ∥ ∥ ∥ 0x8161 - - - - 0x817C 15

MS

MS

MS

MS対応

対応

対応

対応の

の新

新しい

しい変換表

しい

しい

変換表

変換表

変換表を

を使用

使用

使用

使用すると

すると

すると

すると

問題 ①:文字化けのケース

文字化けの発生が解消 Javaアプリケーション IBM-943 ― ― ― ―    ダッシュダッシュダッシュダッシュ 0 00 0x815Cx815Cx815Cx815C Unicode Unicode Unicode Unicode U+2015 U+2015 U+2015 U+2015 SJIS SJIS SJIS SJIS ― ― ― ― 0x815C 0x815C 0x815C 0x815C JVM

MS変換

新IBM変換

JDBC DB2 UDB データベース・サーバー IBM-943 Javaアプリアプリアプリアプリをををを使用使用使用使用してして、してして、、、IBM-943ののののデータベースデータベースデータベースデータベースからから‘からから‘‘‘――――’’’’((((全角全角ダッシュ全角全角ダッシュダッシュダッシュ))))をををを検索検索検索検索 ( (( (MSMSMSMS優先優先優先優先のののコードのコードコードコード)))) 正 正 正 正しくしくしく変換しく変換変換変換

(9)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

MS

MS

MS

MS対応

対応

対応

対応の

の新

新しい

しい

しい

しい変換表

変換表を

変換表

変換表

を使用

使用

使用

使用すると

すると

すると

すると ...

...

...

...

問題 ②:

同じ文字が異なるコード・ポイントで保管されるケース

NEC選定文字のコード・ポイントに統一される Javaアプリケーション IBM-943 ㈱ ㈱ ㈱ ㈱ 0 00 0x878Ax878Ax878Ax878A Unicode Unicode Unicode Unicode U+3231 U+3231U+3231 U+3231 ㈱  ㈱ ㈱  ㈱  0 00 0x878Ax878Ax878Ax878A

JVM

MS変換

新IBM変換

JDBC DB2 UDB データベース・サーバー IBM-943 ( (( (MSMSMS優先MS優先優先優先ののののコードコードコード)コード))) Javaアプリケーションアプリケーションアプリケーションアプリケーションををを使用を使用使用使用してして㈱してして㈱㈱を㈱をををINSERTしたしたしたした場合場合場合場合 CLPでINSERTしたでで したしたした 時 時 時 時ととと同と同同じ同じじじコードコードコードコード 17

MS

MS

MS

MS対応

対応

対応

対応の

の新

新しい

しい

しい

しい変換表

変換表

変換表

変換表を

を使用

使用

使用

使用する

する

する

する場合

場合

場合の

場合

の注意事項

注意事項

注意事項

注意事項

問題①のケースは検索時の問題であり、MS対応の変換表を使用すれ

ば現象はすぐに解決

しかし問題②のケースは既にデータベースに保管されているデータと

の整合性を考慮する必要がある

即ちMS対応の変換表を使用すると、㈱は新たに0x878Aで保管されるため既存の0xFA58の データと混在することになる 2つのコードポイントを統一する必要がある

(10)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

2つの

つの

つのコード

つの

コード

コード

コード・

・・

・ポイント

ポイントを

ポイント

ポイント

を統一

統一

統一

統一する

する方法

する

する

方法

方法

方法((((V

V

V8

V

88

8以降

以降の

以降

以降

の場合

場合

場合

場合)

))

EXPORT/LOADを利用

対象の表のデータをDEL形式で、Unicodeに変換してEXPORT 環境変数のDB2CODEPAGEで1208を指定してEXPORT DB2CODEPAGEを設定する場合、db2setでDB2レジストリー変数として設定すると、そのインスタンスの全てのアプリケーション に影響してしまうので、EXPORTを実行するセッションだけで設定できるよう、AIXであればexport、Windowsであればsetコマンド で環境変数として設定する方がよい NEC選定文字のコード・ポイントに統一する場合 MS対応の変換表が使用できる状態で、LOADのオプションでMODIFIED BY CODEPAGE=1208を指定して LOADしなおす IBM選定文字のコード・ポイントに統一する場合 MS対応の変換表ではなく従来から提供されているIBM変換表を使用し、LOADのオプションでMODIFIED BY CODEPAGE=1208を指定してLOADしなおす

注意事項

LOADでなくIMPORTを使用すると、Unicode(UTF-8)の状態で表の列の長さより長いデー タが欠落するので、IMPORTは使用しないでください。 DB2 V7の場合は、LOADでcodepageを指定できないので、この方法は使用できません。 19

2つの

つの

つのコード

つの

コード

コード

コード・

・・

・ポイント

ポイントを

ポイント

ポイント

を統一

統一

統一

統一する

する方法

する

する

方法

方法((((V

方法

V

V8

V

88

8以降

以降の

以降

以降

の場合

場合

場合

場合).

).

).

).....

NEC選定文字のコード・ポイントに統一する場合の手順

㈱ 0x878A ㈱ 0xFA58 ㈱ 0x878A ㈱ 0x878A

TBL_A

TBL_A

TBL_A

TBL_A

TBL_A

TBL_A

TBL_A

TBL_A

DB DB DB

DB2 2 2 UDB 2 UDB UDB データベースUDB データベースデータベースデータベース    サーバーサーバーサーバーサーバー IBM-943 IBM-943 IBM-943 IBM-943 ㈱ U+3231 ㈱ U+3231

新しい

しい

しい

しい変換表使用

変換表使用

変換表使用

変換表使用

>exportまたはset DB2CODEPAGE=1208  >db2 terminate >db2 connect to sample

>db2 EXPORT to uni.del of del select * from TBL_A

uni.del uni.del uni.del uni.del

>db2 connect to sample

>db2 LOAD from uni.del of del MODIFIED BY CODEPAGE=1208 replace into TBL_A

DB2CODEPAGEの設定は、新規の接続から有効になるため、 当例では db2 terminateを入れています。

(11)

(C)日本IBMシステムズ・エンジニアリング(株) データシステム部

2つの

つのコード

つの

つの

コード

コード

コード・

・・

・ポイント

ポイント

ポイントを

ポイント

を持

持つ

つ文字

文字

文字

文字のその

のその

のその

のその他

他の

の問題

問題

問題

問題

2つのコード・ポイントのものが発生してしまう問題はUnicodeとIBM-943

のコード・ページ変換に限った問題ではなく、IBM-943以外のコード・

ページからIBM-943のコード・ページへの変換が発生する場合に共通

に起こりえる問題

ホスト DB2からデータを抽出し、それをIBM-943のデータベースに保管する場合、ホスト・コー ドの㈱x'446D'は0xFA58に変換されて保管される このデータベースに対してWindows環境のCLPから ㈱ を条件に検索すると、やはり検索条 件に合致しない

しかし新しい変換表が提供されているのは、IBM-943とUnicodeとの変

換だけ

ホストのコードページやUnicode以外(例えばEUCなど)とIBM-943との

間の変換では、まだ潜在している問題といえる

この部分に関しては、2006年にEUC用、2007年にホスト(EBCDIC)コードページ用のMS対応 変換表が追加されています。 ホスト(EBCDIC)コードページ用のMS対応変換に関しては、 DM-07-027 【DB2 9&DB2 UDB V8FP#14編】代替Unicode変換表の使用に関する最新情報 のテクニカルフラッシュをご参照ください。

参照

関連したドキュメント

浸透圧調節系は抗利尿ホルモンが水分の出納により血

部 品 名

総合判断説

・座長のマイページから聴講者受付用の QR コードが取得できます。当日、対面の受付時に QR

従来の MAAP コード(バージョン 4.0 ) (以下、 MAAP4

(1) コ ンテナ 貨物の 荷渡地に つい て、都市コード(国連LOCO DEの5桁コード。以下同じ。 ) を入力する。なお、仮陸揚貨物

次に、ニホンジカの捕獲に係る特例については、狩猟期間を、通常の11月15日~2月15日

REDYコードは元々実際に起こり得るプラント挙動 (プラント安定性や運転時の 異常な過渡変化)を評価する目的で開発されており,4.1