2010年10月17日日曜日

phpMyAdmin の文字化け対策

MySQL を phpMyAdmin から使用しているときに、
SQLの実行結果が文字化けしてしまうことがあります。

原因としてはサーバの文字設定とPHPの文字設定が違うからです。

MySQL の文字設定を問い合わせてみると…


SHOW VARIABLES LIKE 'char%';

Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server ujis
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/



character_set_server ujis

これが問題っぽいです。

character_set_filesystem binary

これはこのままで問題ないです。(変更できない)

で、この設定を(character_set_server) を変えればよいのですが、
私の使用しているレンタルサーバでは設定ファイルを触れないので
この設定を変更できません。

では、どうすれば・・・???

根本的な解決策は見つからないのですが、とりあえずの対応方法が
あるので紹介します。

SQLを実行する際に次のコマンドを一緒に入力します。


SET character_set_server = utf8;


例:

SET character_set_server = utf8;
SELECT * FROM hogetbl;


これで、文字化けはしなくなると思います。

ちなみにこのコマンドを実行したあとのサーバの設定は次のようになります。


SET character_set_server = utf8;
SHOW VARIABLES LIKE 'char%';

Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/


ちゃんと character_set_server が変わっていますね。

でも、一つ問題が・・・
この設定変更は毎回入力してやらないと有効になりません。

ちょっとめんどくさいですが、これでとりあえずは解決できました。
こういうところがレンタルサーバの使いづらいところですね。