Symfoware Server アプリケーション開発ガイド(埋込みSQL編) - FUJITSU - |
目次
索引
![]() ![]() |
第2章 アプリケーションの設計 | > 2.2 文字コード系の考慮 |
アプリケーションのロケールによってアプリケーションが扱う文字コード系が決まります。また、Symfoware/RDBプロセスにも、ロケールと文字コード系があり、これら2つのプロセス間でのやり取りの中でお互いの文字コード系を合わせて処理を行います。
アプリケーションの開発者は、以下を考慮し、データのコード変換ができるだけ少なくなるようにアプリケーションの実行環境を作成することが必要です。
余分なコード変換によるオーバヘッドの削減
コード変換エラーによるデータ損失の排除
Symfoware/RDBでは、以下の文字コード系が使用できます。
データベースに格納するデータの文字コード系は、Symfoware/RDBをインストールするときに指定します。また、Symfoware/RDBのインストール時には、Symfoware/RDBプロセスが動作するときのロケールも指定します。一般的に、不要な文字化けなどの問題を回避するため、プロセスのロケールと文字コード系は同一のものを選択します。Symfoware/RDBにおいても、この考え方のもと、データベースの文字コード系に一致するSymfoware/RDBのロケールを選択することを推奨します。
|
Symfoware/RDBのロケール(OSのデフォルトロケール) |
|||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
|
||||||||
ja |
ja_JP.U90 |
ja_JP.PCK |
ja_JP.UTF-8 |
C |
ja_JP.eucJP |
ja_JP.UTF-8 |
C |
日本語 |
||
データベースの |
EUC_S90 |
◎ |
▲ |
× |
× |
○ |
◎ |
× |
○ |
× |
EUC_U90 |
▲ |
◎ |
× |
× |
○ |
▲ |
× |
▲ |
× |
|
SJIS |
▲ |
▲ |
◎ |
× |
○ |
○ |
× |
○ |
◎ |
|
UNICODE |
▲ |
▲ |
▲ |
◎ |
○ |
▲ |
◎ |
○ |
○ |
◎:組み合わせて運用可能(推奨)
○:組み合わせて運用可能
▲:組み合わせて運用可能(従来互換として存在)
×:組み合わせて運用不可能(エラーになります)
EUC_S90 :日本語EUCコードのS90コード
EUC_U90 :日本語EUCコードのU90コード
SJIS :シフトJISコード
UNICODE :UNICODE
アプリケーションのロケールは、以下のように指定します。
対象OS |
C言語(COBOL以外の言語) |
COBOL言語 |
|
環境変数LANGでロケールを指定します。 |
OSのデフォルトロケールと同一のロケールを環境変数LANGで指定します。 |
|
インストール時に指定されたロケールに従います。 |
アプリケーションの文字コード系は、アプリケーションのロケールによって決まります。
通常、UNIX系システムにおいてはロケールは以下の記述形式です。アプリケーションは、ロケールに指定された文字コード系で動作します。
ロケールの記述形式
ロケールの記述形式は、以下のようになります。
言語_国または地域.文字コード系例
言語が日本語、国または地域が日本国、文字コード系がUNICODEの場合、以下のようにロケールを表現します。
ja_JP.UTF-8
アプリケーションのロケールには、UNIX系システムで標準のCロケールを指定することも可能です。Cロケールの場合、アプリケーションのデフォルトの文字コード系は、アプリケーションが動作する環境により決まります。
アプリケーションが動作する環境 |
アプリケーションのデフォルトの文字コード系 |
---|---|
Symfoware/RDBと同一サーバのアプリケーション |
データベースの文字コード系 |
Connection Managerを利用するアプリケーション |
Connectoin Managerインストール時の文字コード系 |
クライアント端末のアプリケーション |
Symfoware Server クライアント機能インストール時の文字コード系 |
Windows(R)システムにおいては、デフォルトの文字コード系はシフトJISコードが採用されます。
アプリケーションが使用する文字コード系と、データベースに格納されるデータの文字コード系が異なる場合、Symfoware/RDBは自動的にコード変換を行います。
コード変換の詳細については、“コード変換の考慮”を参照してください。
文字コード系が日本語EUCコードの場合、以下の注意が必要です。
アプリケーションのロケールがjaで、かつ、データベースの文字コード系が日本語EUCコードのU90コードの場合、アプリケーションは、日本語EUCコードのU90コードでSymfoware/RDBとデータのやりとりを行う必要があります。
アプリケーションのロケールがja_JP.U90で、かつ、データベースの文字コード系が日本語EUCコードのS90コードの場合、アプリケーションは、日本語EUCコードのS90コードでSymfoware/RDBとデータのやりとりを行う必要があります。
アプリケーション内で使用するホスト変数、動的パラメタ、およびSQLMSGの文字コード系を変更することができます。この変更操作は、クライアント用の動作環境ファイルのパラメタCHAR_SETおよびNCHAR_CODE、または、アプリケーションのコンパイル時にオプションで行います。
対象OS |
C言語(COBOL以外の言語) |
COBOL言語 |
---|---|---|
|
クライアント用の動作環境ファイルに以下のパラメタを指定します。
|
変更できません。 COBOL言語の仕様であり、アプリケーションはロケールに対応する文字コード系で処理します。 |
|
SQL埋込みCOBOLプログラムをプレコンパイルするときに-unオプションで指定します。 |
目次
索引
![]() ![]() |