PostgreSQL JDBC ドライバ 文字エンコーディングパッチ


PostgreSQL 6.5.2 の JDBC ドライバで、データベースの文字エンコーディングを Java 環境での デフォルト文字エンコーディングと区別して扱うようにするパッチです。

※ 6.5.3 の JDBC ドライバにもそのままあたります。

使い方

ドライバとして、"postgresql.Driver" でなく、"postgresql.ce.Driver" を 使用します。
"postgresql.Driver" を指定すると、オリジナルと同じ動作になります。 (なるはずです。)
データベースの文字エンコーディングは接続時にドライバ内部で SQL によってデータベースバックエンドから取得しています。
なんらかの理由で明示的に指定したい場合は URL に下記のように 追加すると、こちらを優先するようにしてあります。
    jdbc:postgresql://pghost/database&charactorEncoding=EUC_JP
  

使用できるエンコーディング名

Java が内部に持つ文字エンコーディング変換機構を利用しているので、 Java の文字エンコーディング名が使用できます。MULE_INTERNAL は 使用できません。
Java の文字エンコーディング名は、下記が参考になります。 PostgreSQL での文字エンコーディング名は、 postgresql/ce/PgCharactorEncoding.java のテーブルにあるものについては Java の文字エンコーディング名にマッピングするようになっています。

注意点

"postgresql.ce.Driver" だけでなく、"postgresql.Driver" も Class.forName() 等でロードすると、両方のドライバがドライバマネージャに 登録されてしまいます。扱うサブプロトコルが同じため、PostgreSQL 用の URL で両方のドライバが有効になるので、文字エンコーディングを 区別しないドライバが動作する可能性があります。

呼び名の変更

マルチバイトが扱えないのを扱えるようにしたわけでもないので、 MB という名称はやめました。

履歴

その他

  1. 確認したプラットホームについて:

    パッチの作成・動作確認は、 で行いました。

  2. 旧版

  3. 関連リンク

mochid@netside.co.jp