文字コード †文字コードを調べる †SHOW VARIABLES LIKE 'character%'; 文字コードの設定 †phpMyAdmin?がインストールされている環境でGUIベースで作業する場合、 新規データベース作成の際に照合順序で"utf8_general_ci"を選択すれば自動的にCHARACTER SETには"urf8"が設定される CREATE DATABASE sample DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; ALTER TABLE sample CHANGE sample_name sample_name VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL; Mysql4.1のEUCで設定されている環境の中にUTF-8のDBを作る †CREATE DATABASE `hogehoge` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; 文字コード設定 †SET NAMES SET CHARACTER SET 文字コードを設定してDBを作成 †CREATE DATABASE zf CHARACTER SET utf8; DB作成後に、文字コードを指定する場合 †ALTER DATABASE zf default character set=utf8; PHP+MySQL+phpMyAdmin?で文字化け †DBをUTF-8に設定。コンソールからSELCTしても、phpMyAdmin?で見ても文字化けしてないのに、PHPで取得すると文字化けする。 解決策1 †以下のように、my.cnfにinit-connectを追記して解決。 [mysql] default-character-set = utf8 [mysqld] default-character-set = utf8 init-connect=SET NAMES utf8 [mysqldump] default-character-set = utf8 解決策2 †my.cnfの[mysqld]の項に以下のような感じで一行追加。 [mysqld] skip-character-set-client-handshake ちなみに「skip-character-set-client-handshake」は、 『サーバーの文字コード設定をクライアントでもそのまま使う』という意味。 mysqldumpで文字化け †DB は特に何もせずデフォルトのままで使用していて、mysqldumpを行ったら文字化けが起こりました。 文字化けの起こしたmysqldump †mysqldump -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql mysqldump --default-character-set=utf8 -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql 確認 †以下のように、文字コードがdatabase以外latin1になっていました。 ちなみに、MySQL の 4.1 は、デフォルトで使用すると、ほとんど全ての文字コードが「latin1」となります。 SHOW VARIABLES LIKE 'character%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | utf8 | mysqldumpがデフォルトでは、文字コードをUTF-8で出力するようになっていて「latin1」をむりやり「utf-8」に変更しようとして、文字化けを起こしているようです。 解決策 †mysqldump --default-character-set=latin1 -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql 秀丸などの「latin1」に対応したテキストエディタでで開く ↓ 文字コードを「latin1」に変更し、一旦保存する ↓ 文字コードを「utf8」に変更して開きなおす Comment †
Counter: 48670,
today: 2,
yesterday: 0
|