| Symfoware(R) Server JDBCドライバユーザーズガイド - FUJITSU - |
目次
索引
![]()
|
第2章 システム設計の考え方
2.2 文字コード流通
2.2.2 文字コードの設計
流通する文字データごとの設定について説明します。
Javaのアプリケーションは、文字データを内部的にUnicode(UCS2)で扱っており、Javaアプリケーションに対してUnicode以外の文字コードの入出力を扱う場合、Javaのコード変換機能(Javaコンバータ)が動作します。このJavaのコード変換機能は、JIS漢字およびJIS非漢字以外の文字コードの変換をサポートしていないので、拡張文字を流通させる際にはすべてUnicodeで流通させることを推奨します。
Unicode流通するには、データベースに格納する文字コード系をUnicodeとし、Javaのアプリケーションが動作するマシンに富士通コード変換製品をインストールする必要があります。また、データベースに対してRDB2_TCP連携またはローカルで接続してください。
JavaのアプリケーションでMSベンダー文字を流通する場合もUnicodeでの流通を推奨します。ただし、Unicode流通しなくても、JDBCドライバおよびJavaのエンコーディング名にMS932を指定することでMSベンダー文字の流通を行うことができます。Windowsマシンの場合にはデフォルトでMS932が指定されています。
Solaris OEマシンまたはLinuxマシン上にJDBCドライバがインストールされていて、Windowsマシンとの間でデータのやりとりを行う場合には、MS932を指定することでMSベンダー文字をWindowsマシンから入出力することができます。ただし、Solaris OEマシンまたはLinuxマシンでは、MSベンダー文字を標準出力することはできません。また、エンコーディング名にMS932を指定したSolaris OEマシンとエンコーディング名にSJISを指定または省略したSolaris OEマシン、またはエンコーディング名にMS932を指定したLinuxマシンとエンコーディング名にSJISを指定または省略したLinuxマシンとの間でデータのやりとりをする場合に、一部の文字(“−”や“〜”など)が文字化けなどで流通できなくなります。エンコーディング名が混在しているシステムの場合には注意が必要となります。
なお、ベンダー依存の問題に関する詳細については、“文字コードに関する留意事項”を参照してください。
Unicode以外の文字コードを使用する場合には、Javaアプリケーションのエンコーディング名にMS932を設定してください。
JDBCドライバに対してエンコーディング名にMS932を設定する場合は、以下のように設定してください。
JIS規格において1983年に互換を伴わない改定が行われ、各プラットフォームで対応レベルが異なるため、しばしば問題が発生しています。
この改定では、新字体と旧字体の第一水準と第二水準の入替え、新しい文字の追加などが行われていますが、一番大きな問題は旧字体の一部を廃止し、新字体に統一したことが挙げられます。
これに対し、各コード系の対応状況は以下のとおりです。
|
コード系 |
対応 |
|
|---|---|---|
|
シフトJIS |
R90 |
新字体に置き換えたが、一部の旧字体の文字は新字体に置き換えない。 |
|
MS-SJIS |
すべてを新字体に置き換える。 |
|
|
EUC |
U90 |
新字体に置き換えたが、一部の旧字体の文字は新字体に置き換えず、新字体を拡張域に追加する。 |
|
S90 |
すべてを新字体に置き換える。 |
|
注)Unicodeは83JIS改定とは無関係に新字体しか存在しません。
上記の対応表のとおり、新字体と旧字体の両方の文字コードを含んでいるコード系はEUC(U90)のみです。新字体と旧字体はそれぞれ別の文字として扱われており、両者間での文字変換はサポートされていません。そのため、EUC(U90)の旧字体の文字データをシフトJIS(MS-SJIS)の文字コードで扱うと、代替文字に置き換えられたり、文字コード変換エラーとなる場合があります。新字体と旧字体の両方の文字コードを流通させる場合は、EUC(U90)で流通する必要があります。
ただし、富士通コード変換製品には、シフトJIS(MS-SJIS)とのコード変換時に、変換可能な文字を新字体か旧字体か、いずれか一方を選択する方法があります。どうしても旧字体を扱いたい場合にはSymfoware Serverのインストールされているマシンに以下に示す富士通コード変換製品の環境変数の設定を行ってください。
|
環境変数名 |
EUC(U90)の新字体を使用する(デフォルト動作) |
EUC(U90)の旧字体を使用する |
|---|---|---|
|
ICONV_CONVERT_TYPE |
s-jistype=sjisms |
s-jistype=r90 |
Javaのコード変換機能はEUCコードをS90の範囲でしかサポートしていません。
この為、Javaのアプリケーションで83JIS改定文字を流通する場合に、全て新字体で流通していても、EUC(U90)で文字データを流通していると、予期せぬコード変換エラーが発生する可能性があります。
Javaのアプリケーションで83JIS改定文字を流通する場合には、Unicodeでの流通を推奨します。
Unicode流通するには、データベースに格納する文字コード系をUnicodeとし、Javaのアプリケーションが動作するマシンに富士通コード変換製品をインストールする必要があります。また、データベースに対してRDB2_TCP連携またはローカルで接続してください。
目次
索引
![]()
|