2008年8月8日金曜日

MySQLの文字コードを換える(SentOS)

======================================
Sent
Apache 2.0.63
PHP 5.2.5
MySQL 5.0.51a-community
phpMyAdmin
======================================

①mysqlの文字コードを確認
# mysql -u root -p
Enter password:


#SHOW VARIABLES LIKE 'char%';


/* プロンプト */
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

/* phpMyAdmin */
character_set_client | utf8
character_set_connection | utf8
character_set_database | latin1
character_set_filesystem |  binary
character_set_results | utf8
character_set_server | latin1
character_set_system | utf8

プロンプト と phpMyAdminで確認すると違いがある



②/etc/my.cnf の [mysqld]に
default-character-set = utf8 追加

/* プロンプト */
character_set_client | latin1
character_set_connection | latin1
character_set_database | utf8
character_set_filesystem |  binary
character_set_results | latin1
character_set_server | utf8
character_set_system | utf8

/* phpMyAdmin */
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_set_database」と「character_set_server」が utf8 になるも、プロンプト と phpMyAdminではまだ違いがある



③/etc/my.cnf に
[mysql]
default-character-set = utf8
を追加

/* プロンプト */
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

/* phpMyAdmin */
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_set_client」、「character_set_connection」、「character_set_results」が utf8 になり、プロンプト と phpMyAdminが同じになる




④データを登録してみる。
1、まず、phpMyAdminからデータを登録。
phpMyAdmin上では正常に表示されるがサイト上では文字化け。

2、サイトからデータを登録。
サイト上では正常に表示されるがphpMyAdmin上では文字化け。


※サイトの文字コードもutf8にしているがなぜだろう。。。





⑤/etc/my.cnf の [mysqld]に
init-connect=SET NAMES utf8 追加


※問題解決。
phpMyAdmin、サイトでデータを登録して文字化けが解消された。




⑥"/etc/my.cnf"を書き換えた後にその設定を有効にするには、MySQLを再起動する必要がある。
# /etc/rc.d/init.d/mysql restart

Shutting down MySQL..    [ OK ]
Starting MySQL..        [ OK ]

一般的な方法
/etc/init.d/mysqld restart...MySQLデーモンの再起動
/etc/init.d/mysqld start...MySQLデーモンの起動
/etc/init.d/mysqld stop...MySQLデーモンの停止

0 件のコメント: