ZODBCDA 文字コード変換

 クエリーの結果を Shift JIS(かUNICODE)でしか受け取れない ODBCドライバがありますが(特に MSの製品)一方 Zopeでは、euc-jpで処理しないと、いろいろ不都合。

 そこで、ODBCの結果を、受け取って Shift JIS→日本語EUCコード変換できるよう ZODBCDAを改造しました。

そのときの手順を以下に書きます。

  1. まずは、JapaneseCodecsをインストールします。(そうじゃないと動きません)

  2. ZODBCDAを Products以下にコピーしたあと、db.pyをこれと置き換えます。

クエリーの結果と、エラーメッセージは文字コード変換していますが、テーブル名やカラム名は変換していませんので、テーブル名やカラム名に日本語を使った場合にはうまく動作しません。

私は、Zope2.5.0 + ZODBC Database Adapter for Zope 2.4 (3.1.0b2 for Python 2.1) http://www.zope.org/Products/DA/ZODBCDA動いています。
 現状では、問題があります。文字列データの 128 * n Bytes 目と 128 * n + 1 Bytes目が2バイト文字の 1byte目と 2Byte 目だと、文字化けします。問題解決には、sql.c (または、sql.i)を修正しなくてはなりません。
http://www.freeml.com/message/zope-memo@freeml.com/0000346


Zope メモ