2008年3月15日土曜日

【MySQL】 文字化け解決法 (UTF-8)

MySQL 5.0, Ubuntu 7.10 Gutsy

これだと文字化けする、ダメな例。

mysql> STATUS;
Server characterset: latin1
Db characterset: latin1
Client characterset: latin1
Conn. characterset: latin1



mysql> SHOW VARIABLES LIKE 'char%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


/etc/my.cnfを編集(apt-getでインストールした場合は/etc/mysql/my.cnf)

[client]
default-character-set=utf8

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


mysql再起動

この設定は新たにデータベースを作成すると反映される。
mysql> create database mydb

すなわち、既存のデータベース、テーブルの設定は古いまま。

UTF-8にしたときの正しい例。

mysql> STATUS;
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8



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 | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+


文字コードの設定はデータベースごとに持っているので、

mysql> use mydb

してから、STATUS, SHOW VARIABLESしたほうがよい。
Db charactersetがlatin1のままだと文字化けする。

ラベル: ,

0 件のコメント:

コメントを投稿

登録 コメントの投稿 [Atom]

この投稿へのリンク:

リンクを作成

<< ホーム