2008年8月22日金曜日

MySQLの文字コードを換える(Windows、xammp)

======================================
Windows XP
Apache 2.0
PHP 5.2.5
MySQL 5.0.51a
phpMyAdmin 2.11.4
======================================

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

mysql> 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で確認すると違いがある



②C:\xampp\mysql\bin\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ではまだ違いがある



③C:\xampp\mysql\bin\my.cnf の [mysql] に
default-character-set = utf8
を追加

※プロンプト と phpMyAdminで確認するが変化なし




④C:\xampp\mysql\bin\my.cnf の [mysqld]に
skip-character-set-client-handshake 追加

/* プロンプト */
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が同じになる

skip-charcter-set-client-handshakeは、MySQLクライアントなどの文字コードをMySQLサーバ(mysqld)で設定した文字コードに、無理やり統一するものです。私の環境では、skip-character-set-client-handshakeを記述しないと、character set client等の一部の変数がLatin1のままで、utf8になりませんでした。(何でだろう)



④"C:\xampp\mysql\bin\my.cnf "を書き換えた後にその設定を有効にするには、MySQLを再起動する必要がある。

xampp コントロールパネルでMySQLを restart

0 件のコメント: