phpMyAdmin や MySQL コマンドライン・クライアント を使い、MySQL バージョン 5.1 で、日本語の名前を持ったテーブルを定義し,日本語のデータをテーブルに格納し てみます.
結論としては、MySQL バージョン 5.1 の場合,
設定ファイル my.ini において cp932 や utf8 に設定したとしても、 phpMyAdmin の動作に支障は無いようです
※ cp932に設定して,簡単な動作チェックをしてみました。その結果も、このWebページに載せています.
なお、 MySQL バージョン 5.1 で試しました (MySQL バージョン 5.0 とは、漢字コード関係の設定法が少し違います)
前準備としては、MySQL バージョン 5.1 のインストールを終えていること。 MySQL インストール (Windows の場合) の Web ページ あるいは MySQL インストール (Linux の場合) の Web ページを参考にしてください。
既定(デフォルト)のキャラクタセットとして, cp932やutf8 などを以下の手順で設定しておくこと. 設定をしなくても「何となく」動くことが多いですが,文字化けなどのトラブルの可能性が増える.
C:\Program Files\MySQL\MySQL Server 5.1\my.ini (XAMPP の場合は C:\xampp\mysql\bin\my.ini) をエディタで書き換える
MySQL バージョン 5.1 以上での設定手順である バージョン 5.0 では、my.cnf のようなファイル名になっていたのですが、変わりました.設定の中身も違う.
XAMPP を使って MySQL をインストールしたので,my.ini の場所は c:\xampp\mysql\bin\my.ini のようになっている.
■ 文字コードをcp932にしたい場合には,次のように my.ini を書きかえる.
■ 文字コードをutf8にしたい場合には,次のように my.ini を書きかえる.
※ キャラクタセットの設定をせずに,すでにデータベースを生成してしまった! という場合には, 上記の手順で解決の手がかりがつかめるかも知れません.
MySQL コマンドライン・クライアント[HTML] を使い、MySQL バージョン 5.1 で、日本語(漢字)の名前を持ったテーブルを定義してみる. ここでは cp932 に設定した場合の実例を示す.
※ Windows のコマンドプロンプトなので,cp932 に設定すると動く.utf8 に設定すると文字が化けます.
「スタート」→「プログラム」→「MySQL」→「MySQL Server 5.1」→「MySQL Command Line Client」
「show variavles like 'char%';」と 「show variavles like 'collation%';」を実行。「cp932」に設定されていることを確認(設定されていなければ、mysql.ini の更新をやりなおす)。
※ 「character_set_system | utf8 」は、変える手段が無い、ので気にしない(データベースファイルのディレクトリ名を utf8 漢字コードを利用して付ける、という意味のようです)。
※ 「character_set_filesystem | binary 」は気にしなくてよい。
データベース名はなんでも良いですが、ここでは、データベース名を t30と書く.
次のようにエラーが出る.
結論: MySQL コマンドライン・クライアント を使うのなら、 MySQL バージョン 5.1 では、cp932 に設定する。(以後のバージョンでは、どうなるかは分かりません)。
バージョン 5.0 のときとの違い
MySQL コマンドライン・クライアント を使う場合、 utf8 ではうまくいかないことを確認しておきました。以下が記録です.
※ MySQL バージョン 5.1 を使いました(以後のバージョンでは、どうなるかは分かりません)。
phpMyAdmin を使っている限りでは,「文字化け」はあまり意識しないかも知れません. ここでは,テーブルの中身やテーブル名に日本語を使う場合の動作例を示す.
以下の条件で動作させました.
CTEATE DATABASE 't40' DEFAULT CHARACTER SET cp932 COLLATE cp932_japanese_ci;
デフォルトのまま(手を加えていない).
※ my.ini において、「default-character-set=cp932 」のように設定していたとしても同様の結果が得られるようです.
※ テーブル名に日本語を使っていますが、特に問題なし。
create table 科目 (
科目番号 integer not null,
科目名 varchar(100) not null,
単位数 integer not null,
担当教員名 varchar(100) not null,
primary key (科目番号)
);
create table 学生 (
学生番号 integer not null,
氏名 varchar(100) not null,
primary key (学生番号)
);
create table 履修登録 (
科目番号 integer not null,
学生番号 integer not null,
primary key (科目番号,学生番号),
foreign key (科目番号) references 科目(科目番号),
foreign key (学生番号) references 学生(学生番号)
);
※ テーブルの中身に日本語が含まれていますが、特に問題なし。
insert into 科目 values ( 1001, 'データベース', 2, 'X' ); insert into 科目 values ( 1002, 'プログラミング', 2, 'Y' ); insert into 学生 values ( 2008001, 'AA AAA' ); insert into 学生 values ( 2008002, 'BB BBBB' ); insert into 履修登録 values ( 1001, 2008001 ); insert into 履修登録 values ( 1001, 2008002 ); insert into 履修登録 values ( 1002, 2008002 );
※ 文字化けせずに表示される.
SELECT * FROM 科目;
本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.
問い合わせ先: 金子邦彦(かねこ くにひこ) ![]()