MySQL5.0 に EUC-JP な環境を構築してみる。
MySQL5.0をUTF-8で使っているときに、EUC-JPのデータを投入して、
PHP5からEUC-JPを表示させるためには、そのままではうまく行かない。
MySQLの環境(my.cnf, version 5.0.22)
[mysqld] default-character-set = utf8 skip-character-set-client-handshake
PHP5 環境(php.ini, version 5.2.6)
[mbstring] ; 全てデフォルト。つまり、以下の通り。
Directive | Local Value | Master Value |
---|---|---|
mbstring.detect_order | no value | no value |
mbstring.encoding_translation | Off | Off |
mbstring.func_overload | 0 | 0 |
mbstring.http_input | pass | pass |
mbstring.http_output | pass | pass |
mbstring.internal_encoding | no value | no value |
mbstring.language | neutral | neutral |
mbstring.script_encoding | no value | no value |
mbstring.strict_detection | Off | Off |
mbstring.substitute_character | no value | no value |
データベース作成
データベースを作成する場合には、EUC-JP(ujis)で作成すること。
$ cat init.sql CREATE DATABASE IF NOT EXISTS データベース名 DEFAULT CHARACTER SET ujis; GRANT ALL PRIVILEGES ON データベース名.* TO ユーザ名@localhost IDENTIFIED BY 'パスワード' WITH GRANT OPTION; $ mysql -u root mysql> use mysql; mysql> source init.sql;
mysqldumpからのデータ追加
ダンプファイルにujisの項目を追加する。具体的には、
1. 先頭に、ujis設定関連の追加。
2. create table文にujisの設定を追加。
を行う。
$ cat foobar.sql -- 先頭に以下を追加。 -- Server version .... set names ujis; set character_set_database=ujis; set character_set_server=ujis; set character_set_results=NULL; status; show variables like "char%"; --- 各テーブル毎に以下の変更を行う。 --- MySQL4.0 だと、 TYPE=MyISAM; の部分を変更する。 --- --- Table structure for table `foobar` --- CREATE TABLE foobar ( .... ) ENGINE=MyISAM DEFAULT CHARSET=ujis; .... $ mysql -u ユーザ名 -pパスワード データベース名 < foobar.sql