2006年07月04日

MySQLの文字セット

本日、MySQLの設定で悩んだのでその件で分かった範囲をメモします。

今日現在で公開されているMySQLのうちで以下のものを使用しました。
MySQL 5.0.22
MySQL 4.1.20
環境はWindowsXP使ってます。


5.0系を使って良いものか悩んで4.1系にしておいたのですが、ステータスをみるとサーバー側はインストール時に指定したsjisになっているのですが、クライアント側がlatinのままです。いやん。

基本的にmy.iniで記述すれば反映されるはずなのですがいくらやっても反映されません。
色々と調べたのですが、ライブラリをコンパイルした時点の文字セットがデフォルトになるというサイトもありすっかり対応策は諦めました。
ただDB接続した時点とか、MySQLコンソールを開いた時に「SET NAMES 文字セット」とやってからだとちゃんと動くらしいです。
でも一時的なものなので毎回やらないといけないですね。


さて、サーバーとクライアント間で文字コードが違うとどうなるかというと当然の事ながら文字化けが起こります。
latinが1バイト文字列しか扱わないため、マルチバイトコートの文字セットと対応付けられると内部で自動変換が行われる際に文字化けが発生するそうです。
4.1系ではマルチバイトコード(Unicode)サポートなので内部での自動変換が行われる仕様で、これがMySQL4.1系で文字化けに悩む原因らしいですね。
文字セットにbinaryがあってこれが指定できていると自動変換されなくて見た目はちゃんと動いているように見える事もあるそうです。


で、毎回設定が戻るのが嫌だったので試しに5.0系を入れてみました。
my.iniの設定がちゃんと反映されるようです。
環境はこれから作るので5.0系で良いかな。
あとレプリケーションについて機能アップしているようなので気になり始めてたのでこの際ですから乗り換えようかと思います。
でもマニュアルが英語しかなくて良く分からず困ってたりしますが(汗

他に問題はどのくらいの問題を抱えているのか見えてない事と今後のアップデート頻度ですかね。
こればっかりはしょうがないですか。
一応、お仕事用途なので怖くはあるのですが。
posted by ケイ at 00:28| Comment(0) | TrackBack(0) | プログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。