2006年9月25日
MS Accessだと文字化けする
MS AccessでMySQLに接続できるようになれば、かなり便利だ。MS Accessを複数人で利用する場合、5,6人が限界らしく、ファイル自体が壊れてしまうケースも報告されている。そこで本格派データベースが必要なわけだ。それがMySQLなんだけど、まぁマイクロソフト製品ほど導入が簡単ではないため今後も勉強が必要そうだ。
さて、MySQLにMS Accessで接続できるのは便利だが、やはりそれなりの制限もある。さらなる研究が必要だが、現在把握しているもので代表的なものが文字化けだ。
この文字化けだがサーバー側とクライアント側の文字セットが異なるために起こるらしく、ODBC設定画面で明示的に指定してあげると、解決できる。
Conncet Options -> Initial Statement -> SET NAMES cp932
この方法以外にAdvancedタブのFlags3にあるRead Options From my.cnfにチェックしてあげるといいらしいのだが、自分はうまくいかなった。
XAMPP上のPHP+MySQL文字化け解決■XAMPP for Windows Version 1.5.0-pl1をWindowsサーバに導入して、PHP(文字コードはシフトJIS)からMySQL5.0.15-nt内の日本語データを検索・表示するかんたんなスクリプトを作成したのだが、日本語部分が「????????」と文字化けしてしまう。同じPHPからOracle9iの日本語データを検索・表示しても文字化けしないので、MySQLの設定に問題があることが分かった。
そこでmy.cnfで[mysqld]セクション(サーバ側)の文字セットをsjisに変更したのだが、それでも状況は変わらない。サーバ上のコマンドラインプロンプトから「mysql.exe」を実行し、同じテーブルの内容をSELECTで表示させると、やはり日本語部分だけが「????????」と文字化けする。念のために、「SET CHARACTER SET SJIS;」というコマンドを投入してから、再度同じテーブルにSELECTをかけると、今度は日本語が正しく表示された。
「status」コマンドでサーバ側の文字セット、クライアント側の文字セットが、ともにSJISになっているにもかかわらず、「SET CHARACTER SET SJIS;」を実行しなければ、SJISで格納した日本語が正しく表示されないのだ。
PHPのスクリプトでも、まず「SET CHARACTER SET SJIS」を実行してから、SELECTを発行すると、今度はWebブラウザ上に正しく日本語が表示された。バージョン5.0からMySQLの日本語対応の内容が変更になっているらしく、インターネットでいろいろ検索したページは、どれも参考にならず、自力で解決するしかなかった。
ちなみに「SET CHARACTER SET SJIS」だと、あんまり反応がよくないが、
set names sjis;
だとうまくいく。
- by editor
- at 16:49
編集長のおすすめの一冊!2010
comments