« 日本語テスト | メイン | 2Ch「ひろゆき」氏の発言 »

RealBasic(2006-2007)+MySQL

RealBasic(2006-2007) でネットワーク上にあるサーバーの MySQL とデータベースプラグインを使ったが,大変困った。

【発生した問題】
(1)MySQL へのデータの登録が正しく行われない(文字コードが狂う)。
(2)正しく書き込まれたデータを読み込んだ時に RealBasic 側で正しく表示されない
 → UTF8 としてデータを読み込んでくれない?

【MySQL バージョン】
mysql Ver 14.12 Distrib 5.0.27, for redhat-linux-gnu (x86_64) using readline 5.0

【解決した方法】
(1)は my.cnf を以下のように設定
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
default-character-set = utf8
skip-character-set-client-handshake
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[mysql]
default-character-set = utf8
[client]
default-character-set=utf8

さらに RealBasic で db.connect した後に,以下の SQL コマンドを送信。

db.SQLExecute ("SET NAMES'utf8'; SET CHARACTER SET 'utf8'; ")

(2)は,読み込んだ文字列データを常に UTF-8 としてそのままパスさせた
文字列変数 = DefineEncoding(レコードセット.Field("フィールド名").StringValue, Encodings.UTF8)

【参考にしたページ】
http://rbgazette.com/?p=193
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ#content_1_38

【感想】
(1)は比較的早く判ったが,困ったのは(2)でした。RealBasic は UTF8 標準だと言う頭があったので,なかなか解決できなかった。
 とりあえず考えられる事をてんこ盛りでやったって感じであまりスマートではないですね。