Symfoware Serverでは、以下の文字コード系を考慮する必要があります。
データベースの文字コード系
Symfoware/RDBの文字コード系
アプリケーションの文字コード系
データベースに格納する文字列型および各国語文字列型のデータの文字コード系です。
データベースの文字コード系として、以下の文字コード系が使用できます。
EUCコード
シフトJISコード
UNICODE
EUCコードは、UNIX系システムの日本語環境でよく使われる文字コード系です。EUCコードには、S90とU90があります。Symfoware Serverでは、S90を使用します。U90コードを使用する場合、日本語拡張表示オプションが必要です。
シフトJISコードは、一般にDOS/Windowsや一部のUNIX系システムでも採用されている文字コード系です。シフトJISコードには、Microsoft系のシフトJISコードや各ベンダが拡張したシフトJISコードが存在します。Symfoware Serverは、Microsoft系のシフトJISコードを採用しています。
UNICODEは、世界各国の文字を統一的に扱うことを目的とした、マルチバイトの文字コード系です。UNICODEを使っている限り、言語種別を意識する必要がありません。
また、Windows(R)においては、UNICODEの補助文字(1~16面の4バイト文字)を利用できます。補助文字のコード変換はUnicode 4.1で変換します。Unicode 4.1の補助文字のコード変換は、文字列型ではUTF-8の4バイト、各国語文字列型ではUCS-2の2文字として扱われます。
文字コード系とデータベースの格納形式について、以下にまとめます。
文字列型の列は、1文字が可変バイトで表現される形式で格納されます。
各国語文字列型の列は、1文字が固定バイトで表現される形式で格納されます。
文字コード系 | 格納形式 | |
---|---|---|
文字列型 | 各国語文字列型 | |
EUCコード | EUCコード | COBOL_EUC形式 |
シフトJISコード | シフトJISコード | シフトJISコード |
UNICODE | UTF-8形式 | UCS-2形式 (注) |
注) 各国語文字列型において、補助文字はUCS-2の2文字として格納されます。
Symfoware Serverのインストール時にSymfoware/RDBのロケールが決定します。この時、Symfoware/RDBのロケールに対応して、Symfoware/RDBの文字コード系が決定します。
Symfoware/RDBの文字コード系とは、Symfoware/RDBプロセスが処理する際の文字コード系を示します。Symfoware/RDBが読み込む動作環境ファイルやRDBコマンドの入力ファイルの文字コード系を示します。また、Symfoware/RDBやRDBコマンドが出力するメッセージもこの文字コード系となります。
Symfoware/RDBのロケールとSymfoware/RDBの文字コード系の関係を以下に示します。
Symfoware/RDBのロケール | Symfoware/RDBの文字コード系 | |
---|---|---|
Solaris | ja | EUCコード |
ja_JP.eucJP | ||
ja_JP.PCK | シフトJISコード | |
ja_JP.UTF-8 | UNICODE | |
C | データベースの文字コード系 (注) | |
Linux | ja_JP.UTF-8 | UNICODE |
C | データベースの文字コード系 (注) | |
Windows | 日本語 | シフトJISコード |
注) インストール時に指定するデータベースの文字コード系が適用されます。
アプリケーションのホスト変数や動的パラメタに格納するデータの文字コード系です。SQLMSGに返却されるSQL文の実行結果を示すメッセージもこの文字コード系となります。
アプリケーションの言語と使用可能な文字コード系の組合せを以下に示します。
| 埋込みSQL連携 | Java連携 | ODBC連携 | .NET Framework連携 | ||||||
---|---|---|---|---|---|---|---|---|---|---|
C | COBOL | Java | C++ | COBOL | Visual Basic | Visual Basic .NET | C# | COBOL | Visual Basic .NET | |
EUCコード | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
シフトJISコード (注) | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
UNICODE | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
注) Linuxの場合、シフトJISコードは使用できません。
Symfoware Serverでは、アプリケーションが使用する文字コード系とデータベースの文字コード系が異なる場合、自動的にコード変換を行います。詳細は、“アプリケーション開発ガイド(埋込みSQL編)”を参照してください。
アプリケーションの文字コード系の指定方法は、作成するアプリケーションにより異なります。
埋込みSQL連携およびJava連携のアプリケーション
UNIX系の場合、環境変数LANGに、使用する文字コード系のロケールを指定します。Windows(R)の場合、OSのロケールに従います。
参照
詳細は、“アプリケーション開発ガイド(埋込みSQL編)”または“アプリケーション開発ガイド(JDBCドライバ編)”を参照してください。
ODBC連携のアプリケーション
ODBCデータソース登録時に、使用する文字コード系のODBCドライバを登録します。
参照
詳細は、“アプリケーション開発ガイド(ODBCドライバ編)”を参照してください。
.NET Framework連携のアプリケーション
内部的にUNICODEで処理するため、アプリケーションの文字コード系を意識する必要はありません。
参照
詳細は、“アプリケーション開発ガイド(.NET Data Provider編)”を参照してください。
UNICODEの補助文字の利用について
Symfoware Serverでは、クライアントがWindows(R)の場合、UNICODEの補助文字(1~16面の4バイト文字)を利用できます。アプリケーションの文字コード系とデータベースの文字コード系の組合せにより、補助文字の扱いは以下のようになります。
クライアント | サーバ | ||
---|---|---|---|
アプリケーションの文字コード系 | データベースの文字コード系 | ||
EUCコード | シフトJISコード | UNICODE | |
シフトJISコード | × (注1) | × (注1) | × (注1) |
UNICODE | × (注2) | × (注2) | 文字列型: ○ |
各国語文字列型:○ (注3) |
○: 利用できます。
×: 利用できません。
注1) アプリケーションの文字コード系がシフトJISコードの場合、補助文字は入力できません。
注2) 補助文字やその他のUNICODE固有の文字は、データを格納する際にコード変換エラーになるため、EUCコードおよびシフトJISコードには変換できません。
注3) 各国語文字列型では補助文字はUCS-2の2文字として格納されます。
補助文字のコード変換はUnicode 4.1で変換します。Unicode 4.1の補助文字のコード変換は、文字列型ではUTF-8の4バイト、各国語文字列型ではUCS-2の2文字として扱われます。
ただし、以下の製品をインストールしている場合、Unicode 2.0でコード変換を行います。
Windows版
SystemWalker/CharsetMGR-M V5.1L10以降
Interstage Charset Manager V8.2以前
Linux版
Interstage Charset Manager V8.2以前
Solaris 32ビット版
Interstage Charset Manager V8
Unicode 2.0とUnicode 4.1の補助文字のコード変換はサロゲートペア領域の扱いが異なります。Unicode 4.1はUNICODEの補助文字を、UTF-8に変換すると、4バイト文字に変換します。Unicode 2.0はUTF8として3バイトまでしか扱えません。そのため、UNICODEの補助文字をUTF-8に変換すると、3バイト文字のペア(3バイト×2)に変換されます。
TCP/IP接続のアプリケーションにおいて、Unicode 2.0でコード変換を行うSymfoware Server 9.1.0以前のバージョンレベル、または、Interstage Charset Managerをインストールしている環境と混在する場合、クライアント用の動作環境ファイルのCHARACTER_TRANSLATEの指定により、Unicode 2.0でコード変換を行います。
クライアント | サーバ | CHARACTER_TRANSLATE | UNICODEのコード変換 |
---|---|---|---|
Symfoware Server Client 9.1.0以前、またはUnicode 2.0のInterstage Charset Managerをインストール | Symfoware Server 9.2.0以降 | SERVER | Unicode 4.1 |
CLIENT | Unicode 2.0 | ||
Symfoware Server Client 9.1.1以降 | Symfoware Server 9.1.0以前、またはUnicode 2.0のInterstage Charset Managerをインストール応 | SERVER | Unicode 2.0 |
CLIENT | Unicode 4.1 |
また、JDBCドライバが動作するJDKについて、Java SE 5.0でUnicode 4.0のコード変換や補助文字のコードポイントを扱うメソッドが追加されています。Javaアプリケーションにおいて、補助文字を扱う場合、Java SE 5.0以降を使用してください。