SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【MySQL】skip-character-set-client-handshake って何?@文字化け対策

my.cnfにて設定できる項目です。
そのままの意味で、勝手な変換を行わず、

default-character-set = utf8

などの設定に従います。

[mysqld]のセクションのところに書いておくとOKです。

●記述例

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake

普通にphpからMySQLに接続しているだけなのに、なぜか文字化けする場合にお試しあれ。

この現象には、php が使用している MySQL のライブラリが影響しています。
自分でコンパイルしたライブラリなら大丈夫かもしれませんが、よそから持ってきた場合、phpからの接続のとき、クライアントの文字コードなどが勝手にlatin1やujisになります。
my.cnf を無視しているかのような動作をします。

設定ファイル my.cnf を触れない場合の代替案としては、
接続のたびにあらかじめ、次のSQLを実行しておくという方法もあります。

set names utf8;

設定ファイルを変更したら、mysqldは再起動ですよー。忘れずに。

関連するメモ

コメント(1)

【MySQL】skip-character-set-client-handshake って使わなくてよくなった@文字化け対策 at softelメモ 2011年1月2日 16:13

[…] 以前から、MySQL+php環境で文字化けが発生するとき、my.cnfの方に skip-character-set-client-handshake の設定を入れて文字化けを防止する対策をよくおこなっていた。 […]