ひさしぶりのブログです。
「ITベンチャーで働いてなくない?」とかいう突っ込みはおいといて、
これからは少しずつ情報を発信していこうと思います。
MySQL5.0のDBに文字コードがutf8のテーブルに、
MS-AccessなどのWindowsクライアントを使ってODBC接続する場合、
デフォルトの設定では当然文字化けが発生してしまいます。
では、この文字化けをどうやって取り除けばいいのかというネタを検索したところ、
どうやってもうまくいかないという人がいたり、
うまくいったんだけれども、なぜうまくいくのかわからないとかいう書き込みばかりで、
結局どうするのがよいのか良くわからなかったので、
私なりにやり方をまとめてみました。
まずはポイントから。
ポイント1.MySQLサーバー上での文字コード設定をちゃんとやること。
ポイント2.クライアントは接続時に「SET NAMES sjis」を実行すること。
MySQL5系では、
default charset=latin1のテーブルにでもutf8のデータを(とりあえず)入れることができて、
SELECTしても文字化けが発生しなかったりするわけですが、
こんないい加減な状態ではいけません。様々な文字コードトラブルの原因になります。
テーブルは、default charset=utf8で作成し、
クライアント接続時には、SET NAMES utf8を発行し、
utf8でおしゃべりすることをMySQLサーバーと約束するべきです。
こうしておくと、ちゃんとしたutf8の情報が保存できます。
この状態で、SET NAMES sjisを発行しておしゃべりすると、
MySQLサーバーは文字コードをutf8からsjisに自動変換して、結果をかえしてくれます。
つまり、サーバー側の設定さえちゃんとやれば、
クライアント側の設定は、
「Initial Statement」に 「SET NAMES sjis」と入れておけば、
文字化けなく表示されます。
これでMySQLのDBにMS-Accessからがんがんクエリーを発行できます。
画像は設定画面の例。
「ITベンチャーで働いてなくない?」とかいう突っ込みはおいといて、
これからは少しずつ情報を発信していこうと思います。
MySQL5.0のDBに文字コードがutf8のテーブルに、
MS-AccessなどのWindowsクライアントを使ってODBC接続する場合、
デフォルトの設定では当然文字化けが発生してしまいます。
では、この文字化けをどうやって取り除けばいいのかというネタを検索したところ、
どうやってもうまくいかないという人がいたり、
うまくいったんだけれども、なぜうまくいくのかわからないとかいう書き込みばかりで、
結局どうするのがよいのか良くわからなかったので、
私なりにやり方をまとめてみました。
まずはポイントから。
ポイント1.MySQLサーバー上での文字コード設定をちゃんとやること。
ポイント2.クライアントは接続時に「SET NAMES sjis」を実行すること。
MySQL5系では、
default charset=latin1のテーブルにでもutf8のデータを(とりあえず)入れることができて、
SELECTしても文字化けが発生しなかったりするわけですが、
こんないい加減な状態ではいけません。様々な文字コードトラブルの原因になります。
テーブルは、default charset=utf8で作成し、
クライアント接続時には、SET NAMES utf8を発行し、
utf8でおしゃべりすることをMySQLサーバーと約束するべきです。
こうしておくと、ちゃんとしたutf8の情報が保存できます。
この状態で、SET NAMES sjisを発行しておしゃべりすると、
MySQLサーバーは文字コードをutf8からsjisに自動変換して、結果をかえしてくれます。
つまり、サーバー側の設定さえちゃんとやれば、
クライアント側の設定は、
「Initial Statement」に 「SET NAMES sjis」と入れておけば、
文字化けなく表示されます。
これでMySQLのDBにMS-Accessからがんがんクエリーを発行できます。
画像は設定画面の例。