■OpenOfficeでテーブル上でレコード更新すると文字化けします
Sqliteのデータベースに登録されているデータの文字コードをUTF-8に変換して、文字コードの問題は解決したと安心していましたら、何の何のまだ残っていました。OpenOffice Baseのテーブル表示で、直接レコードを更新しました。つまり表形式にレコード表示したウィンドウで、直接フィールドをクリックし、文字列をタイプして変更しました。[Enter] キーを押すと、正しく更新できたように見えます。この時点では文字化けも発生していません。
ところが、メニュー「ファイル」->「現在のレコードを保存」を実行すると、更新したフィールドだけが文字化けします。どうやらWindowsの文字コードShift_JISをそのままSqliteに書き込んでいるようです。
■更新時に文字コード自動変換することはできないのか
更新したフィールドをデータベースに書き込むときに文字コードを自動的に変換してくれる機能があればうまく行くはずです。そんな機能があるとしたら、OpenOffice側か、ODBCドライバ側か?OpenOffice Baseのメニュー「編集」->「データベース」->「プロパティ」->「追加設定」に「データ変換」「文字セット」というパラメータが見えます。「やったこれか」と思い、設定値を「Unicode(UTF-8)」にセットしました。でも何も変わりません。相変わらず文字化けします。
ODBCドライバに文字コードの自動変換機能はないのでしょうか?Googleでサーチしてみましたら、次のサイトがヒットしました。
SQLiteの面白さ(11) ODBCドライバを改造した
すでに本家のsqlite3odbc.dllは入っていますから、指示どおり改造版のsqlite3odbc.dllを上書きしました。再度OpenOffice Baseを起動して、テーブルをいじってみました。おお、文字化けが止まった。Shift_JIS→UTF-8の変換がうまく行かない漢字にぶち当たるまでは使ってみようと思います。