|
エンコードは文字セットを表す標準規格です。文字データは、コンピューターがデジタル処理できる標準形式に変換する、つまりエンコードする必要があります。エンコードは、Pervasive PSQL データベース エンジン(サーバー)と Pervasive PSQL クライアント アプリケーションとの間で規定する必要があります。互換性のあるエンコードを使用すれば、サーバーとクライアントでデータが正しく変換されます。
Pervasive PSQL v11 SP3 では、クライアントとサーバー間のエンコードの複雑性、およびオペレーティング システム、言語、アクセス方法のさまざまな組み合わせへの対処がより改善されました。エンコードの機能拡張は、データベース コード ページとクライアント エンコードに分割されています。この 2 種類のエンコードは、別個のものですが相互に関係しています(表 7 を参照してください)。
2 つのエンコード方法は上級ユーザー向けです。一般的には、デフォルトのエンコード設定で十分であり変更の必要はありません。
データベース コード ページおよびクライアント エンコードは、リレーショナル インターフェイスのみに適用されます。トランザクショナル インターフェイスには影響しません。
ここでは、以下の項目について説明します。
データベース コード ページはデータベース コード ページという新しいプロパティで指定します。このプロパティはデータベースとメタデータに使用するエンコードを識別します。デフォルトのデータベース コード ページは "サーバーのデフォルト" で、データベース エンジン実行中のサーバーのオペレーティング システム(OS)コード ページを意味します(OS のコード ページは一般的に「OS エンコード」と呼ばれ、この章のこれ以降の説明ではこの表現を使用します)。
データベース コード ページは、異なる OS エンコードを使用して Pervasive PSQL DDF を手動で別のプラットフォームへコピーしながら、データベース エンジンにメタデータを正しく変換させたい場合に特に役立ちます。
クライアントのエンコードは、Pervasive PSQL クライアント上のアプリケーションが使用するデータ エンコードです。アプリケーションは、任意に選択したエンコードでデータを格納することができます。ただし、前に述べたように、データベース エンジンとクライアント アプリケーション間では互換性のあるエンコードを定める必要があります。以前のバージョンの Pervasive PSQL では、データベース エンジンとクライアント間でエンコードの互換性を確実にする方法がありました。
これらの方法は、データベース コード ページを利用するように機能拡張されました。アプリケーションは、Pervasive PSQL クライアントがデータベース コード ページとクライアント アプリケーション間でデータを自動的に変換するように指定することができるようになりました。これは、自動変換と呼びます。ただし、自動変換によって文字を変換するのは、それらの文字が両方のコード ページ(サーバー マシンのコード ページとクライアント マシンのコード ページ)に存在する場合のみであることに注意してください。
自動変換は、クライアント アプリケーションがデータベース エンジンに接続したときに指定されます。『SQL Engine Reference』の 「ODBC 接続文字列」を参照してください。
データの変換は、要求に応じてクライアントで行われます(変換はいつも必要なわけではありません。たとえば、クライアントのオペレーティング システム(OS)エンコードがサーバーの OS エンコードと一致している場合は不要です)。
次の表で、データベース コード ページとクライアント エンコード間の相互の影響を説明します。
データベース内に OEM 文字データがある場合、旧来の解決法は DSN を使用する ODBC のようなアクセス方法を使用して OEM/ANSI 変換を指定することでした。このバージョンでは、データベースに OEM コード ページを設定し、アクセス方法で自動変換を使用することが可能になりました。『SQL Engine Reference』の「エンコード変換」も参照してください。
メモ
データベース エンジンは、アプリケーションがデータベースに追加するデータおよびメタデータのエンコードを検証しません。エンジンは、すべてのデータが、表 7 で説明されているデータベース コード ページを使用して入力されるものと想定しています。
データベース内に OEM 文字データがある場合、旧来の解決法はアクセス方法で OEM/ANSI 変換を指定することでした。ここでは、OEM 文字データを使用する Linux クライアント向けに旧来の方法について説明します。
メモ
旧来の方法は引き続きサポートされますが、前に説明したようにデータベースに OEM コード ページを指定し、アクセス方法で自動変換を使用することをお勧めします。
Btrieve API または DTI(Distributed Tuning Interface)を使用する場合は、アプリケーションで使用されるローカル エンコードでファイル名とパスを提供する必要があります。Btrieve API や DTI は、サーバーおよびクライアント上の OS エンコード間の相違に対処します。
『SQL Engine Reference』の 「OEM/ANSI 変換」も参照してください。
ODBC を使用する場合、エンコードは、 Win32 のOSでは SHIFT-JIS を使用してください。
日本語版の Linux は一般的にデフォルトでそのエンコードを EUC-JP または UTF-8 に設定します。
日本語版の Linux を使用している場合、クライアントは別の Linux サーバー(たとえばローカルに)、あるいは Win32 の SHIFT-JIS サーバーに接続できます。Linux サーバーに置かれている SHIFT-JIS にエンコードされたデータベースに接続することも可能です。
以下に示す手順を使用して必要な設定を行ってください。これらのケースは、アプリケーション自体は何も変換を行わず、そのマシンのネイティブのエンコードを使用することを前提としています。
このサーバーで受け取るものはすべて SHIFT-JIS でなければいけません。サーバーからクライアントに送られるものはすべて EUC-JP でなければいけません。
これを達成するには、指定のデータベースへの接続に使用する ODBC.INI(デフォルトで /usr/local/psql/etc
にあります)内のクライアント DSN 設定が次のようになっている必要があります。
[dbclient] Driver=/usr/local/psql/lib/libodbcci.so Description=Pervasive ODBC Client Interface:JPN- 2000SERVER:1583/dbclient ServerDSN=DEMODATA ServerName=JPN-2000SERVER:1583 TranslationDLL=/usr/local/psql/lib/libxlate.so.10 TranslationOption=90000932
TranslationDLL
の行は ODBC クライアント インターフェイスが使用する変換ライブラリを指定しています。
TranslationOption
の行は、この変換で 9000(EUC-JP)から 0932(SHIFT-JIS)が必要であることを指定しています。
この例を使用すると、クライアントからのすべてのデータがサーバーに送られる前に SHIFT-JIS に変換され、クライアントがサーバーからデータを受け取る前には EUC-JP に変換されます。
このサーバーで受け取るものはすべて SHIFT-JIS でなければいけません。サーバーからクライアントに送られるものはすべて UTF-8 でなければいけません。
これを達成するには、指定のデータベースへの接続に使用する ODBC.INI(デフォルトで /usr/local/psql/etc にあります)内のクライアント DSN 設定が次のようになっている必要があります。
[dbclient] Driver=/usr/local/psql/lib/libodbcci.so Description=Pervasive ODBC Client Interface:JPN- 2000SERVER:1583/dbclient ServerDSN=DEMODATA ServerName=JPN-2000SERVER:1583 TranslationDLL=/usr/local/psql/lib/libxlate.so.10 TranslationOption=90010932
TranslationDLL の行は ODBC クライアント インターフェイスが使用する変換ライブラリを指定しています。
TranslationOption の行は、この変換で 9001(UTF-8)から 0932(SHIFT-JIS)が必要であることを指定しています。
この例を使用すると、クライアントからのすべてのデータがサーバーに送られる前に SHIFT-JIS に変換され、クライアントがサーバーからデータを受け取る前には UTF-8 に変換されます。
この設定を使用する場合は、DSN の定義を変更する必要はありません。dsnadd
ユーティリティで作成されたままの DSN を使用します。
この設定を使用する場合は、DSN の定義を変更する必要はありません。dsnadd
ユーティリティで作成されたままの DSN を使用します。『Pervasive PSQL User's Guide』の 「dsnadd」を参照してください。
このサーバーで受け取るものはすべて EUC-JP でなければいけません。サーバーからクライアントに送られるものはすべて UTF-8 でなければいけません。
これを達成するには、指定のデータベースへの接続に使用する ODBC.INI(デフォルトで /usr/local/psql/etc にあります)内のクライアント DSN 設定が次のようになっている必要があります。
[dbclient] Driver=/usr/local/psql/lib/libodbcci.so Description=Pervasive ODBC Client Interface:JPN- 2000SERVER:1583/dbclient ServerDSN=DEMODATA ServerName=JPN-2000SERVER:1583 TranslationDLL=/usr/local/psql/lib/libxlate.so.10 TranslationOption=90019000
TranslationDLL の行は ODBC クライアント インターフェイスが使用する変換ライブラリを指定しています。
TranslationOption の行は、この変換で 9001(UTF-8)から 9000(EUC-JP)が必要であることを指定しています。
この例を使用すると、クライアントからのすべてのデータがサーバーに送られる前に EUC-JP に変換され、クライアントがサーバーからデータを受け取る前には UTF-8 に変換されます。
この状況は Win32 エンジンに SHIFT-JIS データベースがある場合に可能ですが、すべてのファイルを Linux EUC-JP サーバーに移動することができます。この場合、そのデータベースは EUC-JP Linux マシンにありますが、DDF ファイル内のすべてのデータおよびデータ ファイルは SHIFT-JIS です。
この場合、DSN は以下のようになります。
[dbclient] Driver=/usr/local/psql/lib/libodbcci.so Description=Pervasive ODBC Client Interface:JPN- 2000SERVER:1583/dbclient ServerDSN=DEMODATA ServerName=JPN-2000SERVER:1583 TranslationDLL=/usr/local/psql/lib/libxlate.so.10 TranslationOption=90000932 CodePageConvert=932
最後の行は、サーバーでは EUC-JP エンコードを使用するが、このサーバー上のデータは SHIFT-JIS として処理することを指定しています。
|