MySQL(ver.5.0)

補足 UNICODE(UTF-8)環境の設定

前へ | 目次へ |次へ  | Yamada-Lab

Windows Xp、Apache2、MySQL5、PHP5の環境において、漢字等のマルチバイト文字コードをUNICODE(UTF-8)で統一するための環境設定方法について述べます。

■PHP.iniファイルの設定

 PHPの動作環境を UNICODE(UTF-8)にするためには、以下の設定を行います。

(1)c:\phpの「php.ini」ファイルをテキストエディタで開きます。 (2007年9月14日修正)

(注)PHP4では、php.iniファイルは、c:\Windowsディレクトリに置いていましたが、PHP5では、php.exeがあるc:\phpディレクトリに置きます。

(2)[mbstring]という行を探し、以下の2行を「UTF8」とします。

mbstring.internal_encoding = UTF8
mbstring.http_output = UTF8

(3)「default_charset =」という部分を探し、以下のように変更します。ここは「"」で囲みます。

default_charset = "UTF8"

(4)Apacheを「Restart」するか、パソコンを再起動します。

 

■my.iniファイルの設定

 MySQL4.1からは、文字コードの設定が複雑になりました。Windows環境でMySQLを使い、漢字コードを文字化けしないで表示するためには、以下の設定が必要です。

(注)MySQL4.0までは、文字コード(キャラクターセット)はMySQLのデータベースサーバだけが設定するものであり、クライアントの文字コードは、サーバの文字コードに自動的に合わせて動作していました。
しかし、MySQL4.1以降は、データベースサーバ、クライアントがそれぞれの文字コードで動作するようになり、コンパイル時等にそれぞれの設定が必要になりました。
ダウンロード用のバイナリファイルは欧米でコンパイルされ配布されるので、一般にクライアント用の文字コードは1バイト系の「latin1」コードや「ASCII」コードに設定される場合が多く、クライアント用に「SJIS」コードや「EUC」コードを使用する日本の場合、文字化けがおきてしまいます。
また、MySQL4.1以降のMySQLの内部記述言語がunicodeの「utf8」コードで統一されるようになったことも、日本語を使用する立場からは文字コードの扱いを複雑にしています。
詳細は、 http://www.mysql.gr.jp/frame/modules/bwiki/index.php?cmd=read&page=FAQ#content_1_40 等を参考にしてください

 MySQLの動作環境を UNICODE(UTF-8)にするためには、以下の設定を行います。

(1)既定のインストールでは、MySQLは、「C:\Program Files\MySQL\MySQL Server 5.0」のフォルダにインストールされます。そのフォルダの中の「my.ini」ファイルをエディターで開きます。

(2)「# CLIENT SECTION」の行を探し、「port = 3306」の下で、以下の記述を行います。

[mysql]

default-character-set=utf8

[mysqldump]

default-character-set=utf8

(3)「# SERVER SECTION」の行を探し、「[mysqld]」の行の下に、「default-character-set=・・・」の行を探し、以下のように設定します。

default-character-set=utf8

(4)MySQL 5.0.13-rc 以上のバージョンの場合、(2)の記述の下に、以下の記述を挿入します。

skip-character-set-client-handshake

(注)この記述は極めて重要です。これで、文字化けが解消されます。

(5)「my.ini」ファイルを書き換えた場合は、WindowsOSにおける「MySQLサービス」を再起動するか、PCそのものを再起動する必要があります。

■config.inc.phpファイルの設定

 phpMyAdminの動作環境を UNICODE(UTF-8)にするためには、以下の設定を行います。

(1)「・・\phpMyAdmin\」フォルダ内の「config.inc.php」ファイルをエディタで開き、以下の設定を行います。

(2)$cfg['Lang']の行を、以下に設定します。

$cfg['Lang'] = 'ja-utf-8';

(注)phpMyAdminにおける文字化け解消には、この設定が決定的なようです。

[参考]
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2343141

(3)以下の行も、下記のように「utf8」に設定します。

// Default language to use, if not browser-defined or user-defined
$cfg['DefaultLang'] = 'ja-utf-8';

// Default connection collation (used for MySQL >= 4.1)
$cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci';

(4) phpMyAdminにブラウザで再アクセスすれば、新しい環境設定が有効になります。

■ブラウザ対応

(1)ブラウザでの表示文字コードを「UTF8」にするために、HTMLファイルのHEAD部に、以下のMETAタグを記述します。

<meta http-equiv="content-type" content="text/html;charset=utf-8" >

 

■SQL文「set names utf8;」の実行

 SQL文の文字コードや実行結果のレコードセットの文字コードなどクライアント側の文字コードをMySQLに通知する方法として、「set names 」文があります。「UTF8」の場合は、「set names utf8;」のSQL文を、データベースに接続した直後に1回だけ実行します。

// データベースサーバへの接続
$db = mysql_connect('localhost','ユーザ名',パスワード');

// SQL文の実行
$sql = "set names utf8;";
mysql_query($sql,$db);

 


前へ | 目次へ |次へ  | Yamada-Lab

執筆 山田豊通
更新日: 2007年9月14日