ひさしぶりのブログです。
「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からがんがんクエリーを発行できます。

画像は設定画面の例。

ODBC設定

HyperEstraier という、とってもステキな検索エンジンがあります。

私も個人的に使っているのですが、
作者の方とお話したところ、
いいロゴを募集しているとのことで、
半ば強制的に私が作ったロゴを載せてもらいました。

同僚にWeb 2.0的とはとてもいえないようなデザインといわれてしまいました。
まぁ、歴史は繰り返すわけですから、
Web 5.8βくらいでこんなデザインが主流になることを強く予感させます。

HyperEstraierをいたるところで使って、もっといい検索エンジンになるようにプレッシャーをかけていきましょう。
作者にプレッシャーをかけた分だけ検索速度が早くなると聞いておりますので。

一家にひとつ全文検索エンジンという時代が近づいています。
「超弩級」というクエリーを投げて、10歳のときに書いた作文がヒットする時代もそう遠くは無いようです。
その日に備えて、過去の作文を文書ドラフトに変換しておきましょうね。

ブログ作りました。


コンセプトは…


#!/usr/bin/env perl -T

use strict;
use warnings;
use PHP;
require_once('jcode.pl');

みたいな。

この続きを楽しく書いてくれるような方にたくさん読みに来て欲しいです。


末長くよろしくお願いします。