データをutf8で作成しているはずなのに端末で文字化けしてるから不思議だな~とは思っていた。phpMyAdminでもMySQL Query browserでも日本語は出ているのに、端末上では????になってしまう。で端末上で
select replace('黒さん株式会社','株式会社','');
とやれば
黒さん
と出てくるのに、何故かstored procedureで同じ事をやろうとしてもうまくいかない。それどころか、時々、stored procedureがぶっ飛んで、無くなってしまう!!!
「困ったな~」「なんでかな~」と思っていて、ハッと思いついた。linuxの端末の文字セットはutf8だけど、mysqlコマンドのコンソールが違ってれば、文字の変換なんぞうまくいくわけないよな!!!
mysqlコマンドのコンソールの文字セットの設定が、デフォルトで今何になっているのか、その設定は何処にどう記述されているのかという話は宿題として、とりあえず、端末でutf8を出してみようという事で、調べてみると、
/etc/my.cnfに
[mysql]
default-character-set=utf8
[mysqld]
default-character-set=utf8
character_set_server=utf8
skip-character-set-client-handshake
と追加してmysqldを再起動する。で、確認方法として
mysql> SHOW VARIABLES LIKE 'character\_set\_%';
+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
+--------------------------+-------+
6 rows in set (0.00 sec)
と、なっていればO.K.ですよ。という事で、端末で、今まで????だった日本語が無事表示できるようになりました。
マルッと!さんのmysql で utf8 を使うを参考にさせていただきました。どうもありがとうございました。
と、書いたのはいいんだけど、実際にやってみたら、自宅サーバで書いていたブログが文字化けしてしまった。どうもMovable typeは違うコードを使ってたみたい。これも、今度、確認しておかなければならない宿題になりました。
で、/etc/my.cnfに
[mysql]
default-character-set=utf8
だけ追加したら、とりあえず端末もstored procedureもブログをO.K.となりました。やれやれ(^^;
0 件のコメント:
コメントを投稿