トップページ -> インストール,設定,利用 -> MySQL -> MySQL 漢字コード
[サイトマップへ], [サイト内検索へ]

MySQL 漢字コード

使用可能なキャラクタセット(character set)

MySQL が扱えるキャラクタセット(character set)は,次のような種類がある.

シフト JIS 系なら cp932、 EUC-JP 系なら eucjpms、 unicode 系なら utf8 が有力な候補になる。 (特別な事情が無い限り、他は忘れてしまってよい)。

では、この3つのうち、どれにするかは、場合によって違う。 散発的に書くと、

  1. eucjpms を選ぶと、eucjpms と Java のキャラクタセットは非完全互換(完璧ではない)、という問題あり。
  2. utf8 を選ぶと、Web との相性はいい(特別な理由が無い限り、MySQL層の漢字コードと、Webのような上位層の漢字コードを一致させるべき)けれど、コマンドライン・クライアント が動かない。
  3. cp932 を選ぶと、phpMyAdmin など PHP 系のアプリを動かすのが面倒(かも知れない)(調べきっていないので、済みません)。

散発的な意見だけでは仕方がないので、以下、事実をいくつか連ねておきます.


使用可能なキャラクタセット(character set)の確認法

使用可能なキャラクタセット(character set)を確認するには, phpMyAdminコマンドライン・クライアント を使って,

show character set;

を実行する

[image]

使用されるキャラクタセットの確認

使用可能なキャラクタセットはたくさんありますが、そのうちどれが、実際に使用されているか、簡単に確認できる.

  1. mysql -u root -p -d testdb」により,MySQL データベース管理者で接続

    root」は MySQL データベース管理者のユーザ名

    mysql -u root -p -D testdb
    

    [image]
  2. MySQL データベース管理者のパスワード

    プロンプトが出るので, MySQL データベース管理者のパスワード を入力する.

    画面にパスワードが表示されないのは正常動作.

    実行後,エラーメッセージが出ないことを確認

    [image]
  3. 現在開いているデータベースのキャラクタセットを確認する

    次のSQLを実行

    show variables like 'character_set%';
    

    [image]
  4. SQL文「show variables like 'collation%';」の実行

    [image]
  5. \quit で終了
    [image]

分析


サーバ文字コードセットの設定法

サーバ文字コードセットの設定法はいくつかある.


クライアント文字コードセット自動変換機能の解除

上記に「character_set_client, haracter_set_connection, haracter_set_results の値は、クライアントの種類ごとに変わる値」である. これらの値のことを、「クライアント文字コードセット」と呼ぶことがある.

クライアント文字コードセットは、クライアントの種類ごとに違う値である.これが基本。 ところが、(ややこしいことに)、MySQL の設定ファイル mysql.ini (または mysql.cnf) の [mysqld] 部分に、 skip-character-set-client-handshake の値を設定すると、 クライアント文字コードセットとして、character_set_server に設定された値が(クライアントの種類に関係なく)使用されるようになる. これを、クライアント文字コードセット自動変換の解除という.


データベースダンプ時の文字コードセット自動変換機能の解除

データベースダンプ時の文字コードセット自動変換機能を解除したいときは、 default-character-set は「binary」に指定すること。 (データベースダンプ時の文字コードセット自動変換機能を使うことの欠点は、文字化けしているのに気づきにくい場合があるという問題)。


本サイトは金子邦彦研究室のWebページです.サイトマップは,サイトマップのページをご覧下さい. 本サイト内の検索は,サイト内検索のページをご利用下さい.

問い合わせ先: 金子邦彦(かねこ くにひこ) [image]