uso

雑記いろいろ
★書いてある内容に保証は一切ありません。
 ご自身で判断をしてください。

[util] MySQL×Access文字化け

2010-03-11 21:34:33 | util
■環境
  MySQL5.1
  Access2002(古いw)

■MySQL×Accessの実現方法

ODBCドライバを使う。
って事で、MySQL公式サイトからDL。
「Connector/ODBC」というのから適当にDLすると、最新版(2010年3月11日)は、

mysql-connector-odbc-5.1.6-win32.msi

ってことで、ver5.1.6を深く考えずインストール。

あとは、コンパネ→管理→データソースでドライバ設定。
参考はこの辺を:http://allabout.co.jp/internet/database/closeup/CU20070913A/index2.htm

これでOK。
あとは、ACCESSでMySQLに接続してみよう。
この辺参考:http://allabout.co.jp/internet/database/closeup/CU20021003/index2.htm

そして接続した結果を見ると・・・日本語文字化け 。゜(゜´Д`゜)ノ

■ODBCの文字化けを直そう

文字化けについて色々調べると、サーバとクライアントの文字コードを設定すれば云々・・・と書いてある。
(この辺:http://www.editorgoes.net/blog/2007/01/mysqlaccess.html)
ただ、これをするとSQLインジェクションとかの問題もあったりしてあまり良くない、らしい。

ってか、MySQLとAccessの間に横たわるMyODBC?(正式名称かは不明だが)で
文字コード変換できないとダメだろう、と思い調査。


最初に調べたサイトに詳細が載っていたのに見落としていて、見付けるのに時間がかかったが、
---------------------------------------------------------------------------------
「Connect Options」タブの「Initial Statement」に
「SET NAMES SJIS」と入力し日本語が表示できるように設定します。
「Character Set」にMySQLをインストール設定した場合に指定した文字コード「sjis」を指定します。
---------------------------------------------------------------------------------
と書いてある。

なので、ODBCのオプションを探し、設定してみる。
  Initial Statement : SET NAMES SJIS
  Character Set   : utf8 (今回DBはutf8なので)

すると、エラー。
「set names not allow」
「SET NAMES SJIS」の入力を受け付けてくれない。

原因が分からず調べていると、どうもMyODBC5.1からセキュリティの都合でset namesを許可しなくなったらしい。
その前のODBC3.5まではOKとのこと。

しつこく探せば対応もあったのかもしれないが、ODBC5.1にこだわる理由も無かったので、
3.5を入れなおし、同様の設定をする(5.1と3.5は若干ODBC設定画面が違う)、上手くいきました。





最新の画像もっと見る